﻿using System;
using System.Net;
using System.Linq;
using System.Linq.Expressions;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using System.Runtime;
using System.Runtime.InteropServices;

using PickGold.Handler;

namespace PickGold
{
	#region AsciiSimple

	/// <summary>
	/// 
	/// </summary>
	[StructLayout(LayoutKind.Sequential)]
	public struct AsciiSimple : IEnumerable<byte>, ICollection
	{
		private static HAction<AsciiSimple, int, byte> Setter;

		private static HAction<AsciiSimple, int, byte> Getter;

		private static void CreateHandler()
		{
			if (Setter != null && Getter != null)
				return;

			var ss = new SwitchCase[sbyte.MaxValue + 1];
			var gs = new SwitchCase[sbyte.MaxValue + 1];
			var fs = typeof(AsciiSimple).GetFields();
			var eo = Expression.Parameter(typeof(AsciiSimple).MakeByRefType(), "me");
			var ei = Expression.Parameter(typeof(int).MakeByRefType(), "index");
			var ev = Expression.Parameter(typeof(byte).MakeByRefType(), "value");
			var el = Expression.Label();
			for (var i = 0; i <= sbyte.MaxValue; i++)
			{
				for (var ii = fs.Length - 1; ii >= 0; ii--)
				{
					var vs = fs[ii].GetCustomAttributes(typeof(DefaultValueAttribute), true) as DefaultValueAttribute[];
					if (vs != null && vs.Length > 0 && object.Equals((byte)i, vs[0].Value))
					{
						ss[i] = Expression.SwitchCase(Expression.Block(Expression.Assign(Expression.Field(eo, fs[ii]), ev), Expression.Return(el)), Expression.Constant(i));
						gs[i] = Expression.SwitchCase(Expression.Block(Expression.Assign(ev, Expression.Field(eo, fs[ii])), Expression.Return(el)), Expression.Constant(i));
					}
				}
			}
			Setter = Expression.Lambda<HAction<AsciiSimple, int, byte>>(Expression.Block(Expression.Switch(ei, ss), Expression.Throw(Expression.New(typeof(ArgumentOutOfRangeException))), Expression.Label(el)), eo, ei, ev).Compile();
			Getter = Expression.Lambda<HAction<AsciiSimple, int, byte>>(Expression.Block(Expression.Switch(ei, gs), Expression.Throw(Expression.New(typeof(ArgumentOutOfRangeException))), Expression.Label(el)), eo, ei, ev).Compile();
		}

		/// <summary>
		/// 
		/// </summary>
		/// <param name="index"></param>
		/// <returns></returns>
		public byte this[int index]
		{
			set
			{
				if (Setter == null)
					CreateHandler();
				Setter(ref this, ref index, ref value);
			}
			get
			{
				var v = byte.MinValue;
				if (Getter == null)
					CreateHandler();
				Getter(ref this, ref index, ref v);
				return v;
			}
		}

		int ICollection.Count
		{
			get
			{
				return BitUtil.B08_07;
			}
		}

		bool ICollection.IsSynchronized
		{
			get
			{
				return false;
			}
		}

		object ICollection.SyncRoot
		{
			get
			{
				return null;
			}
		}

		void ICollection.CopyTo(Array array, int index)
		{
			foreach (var item in (IEnumerable)this)
				array.SetValue(item, index++);
		}

		IEnumerator<byte> IEnumerable<byte>.GetEnumerator()
		{
			return this.GetEnumerator();
		}

		IEnumerator IEnumerable.GetEnumerator()
		{
			return this.GetEnumerator();
		}

		private IEnumerator<byte> GetEnumerator()
		{
			yield return this.NUL;
			yield return this.SOH;
			yield return this.STX;
			yield return this.ETX;
			yield return this.EOT;
			yield return this.ENQ;
			yield return this.ACK;
			yield return this.BEL;
			yield return this.BS;
			yield return this.HT;
			yield return this.LF;
			yield return this.VT;
			yield return this.FF;
			yield return this.CR;
			yield return this.SO;
			yield return this.SI;
			yield return this.DLE;
			yield return this.DC1;
			yield return this.DC2;
			yield return this.DC3;
			yield return this.DC4;
			yield return this.NAK;
			yield return this.SYN;
			yield return this.ETB;
			yield return this.CAN;
			yield return this.EM;
			yield return this.SUB;
			yield return this.ESC;
			yield return this.FS;
			yield return this.GS;
			yield return this.RS;
			yield return this.US;

			yield return this.SP;
			yield return this.EXCLAMATION;
			yield return this.QUOTATION;
			yield return this.SHARP;
			yield return this.DOLLAR;
			yield return this.PERCENT;
			yield return this.AMPERSAND;
			yield return this.APOSTROPHE;
			yield return this.LP;
			yield return this.RP;
			yield return this.ASTERISK;
			yield return this.PLUS;
			yield return this.COMMA;
			yield return this.MINUS;
			yield return this.PERIOD;
			yield return this.SLASH;

			yield return this.D0;
			yield return this.D1;
			yield return this.D2;
			yield return this.D3;
			yield return this.D4;
			yield return this.D5;
			yield return this.D6;
			yield return this.D7;
			yield return this.D8;
			yield return this.D9;

			yield return this.COLON;
			yield return this.SEMICOLON;
			yield return this.LT;
			yield return this.EQUAL;
			yield return this.GT;
			yield return this.QUESTION;
			yield return this.AT;

			yield return this.A;
			yield return this.B;
			yield return this.C;
			yield return this.D;
			yield return this.E;
			yield return this.F;
			yield return this.G;
			yield return this.H;
			yield return this.I;
			yield return this.J;
			yield return this.K;
			yield return this.L;
			yield return this.M;
			yield return this.N;
			yield return this.O;
			yield return this.P;
			yield return this.Q;
			yield return this.R;
			yield return this.S;
			yield return this.T;
			yield return this.U;
			yield return this.V;
			yield return this.W;
			yield return this.X;
			yield return this.Y;
			yield return this.Z;

			yield return this.LSB;
			yield return this.BACKSLASH;
			yield return this.RSB;
			yield return this.CIRCUMFLEX;
			yield return this.UNDERSCORE;
			yield return this.BACKTICK;

			yield return this.a;
			yield return this.b;
			yield return this.c;
			yield return this.d;
			yield return this.e;
			yield return this.f;
			yield return this.g;
			yield return this.h;
			yield return this.i;
			yield return this.j;
			yield return this.k;
			yield return this.l;
			yield return this.m;
			yield return this.n;
			yield return this.o;
			yield return this.p;
			yield return this.q;
			yield return this.r;
			yield return this.s;
			yield return this.t;
			yield return this.u;
			yield return this.v;
			yield return this.w;
			yield return this.x;
			yield return this.y;
			yield return this.z;

			yield return this.LBB;
			yield return this.VERTICAL;
			yield return this.RBB;
			yield return this.TILDE;
			yield return this.DEL;
		}

		#region Items

		/// <summary>
		/// 0x00 空字符
		/// </summary>
		[DefaultValue(AsciiCode.NUL)]
		public byte NUL;
		/// <summary>
		/// 1x01 文头/标题开始/传输开始
		/// </summary>
		[DefaultValue(AsciiCode.SOH)]
		public byte SOH;
		/// <summary>
		/// 2x02 正文开始
		/// </summary>
		[DefaultValue(AsciiCode.STX)]
		public byte STX;
		/// <summary>
		/// 3x03 正文结束
		/// </summary>
		[DefaultValue(AsciiCode.ETX)]
		public byte ETX;
		/// <summary>
		/// 4x04 文尾/传输结束
		/// </summary>
		[DefaultValue(AsciiCode.EOT)]
		public byte EOT;
		/// <summary>
		/// 5x05 请求
		/// </summary>
		[DefaultValue(AsciiCode.ENQ)]
		public byte ENQ;
		/// <summary>
		/// 6x06 确认/收到通知
		/// </summary>
		[DefaultValue(AsciiCode.ACK)]
		public byte ACK;
		/// <summary>
		/// 7x07 振铃/响铃
		/// </summary>
		[DefaultValue(AsciiCode.BEL)]
		public byte BEL;
		/// <summary>
		/// 8x08 退格
		/// </summary>
		[DefaultValue(AsciiCode.BS)]
		public byte BS;
		/// <summary>
		/// 9x09 制表/水平制表符
		/// </summary>
		[DefaultValue(AsciiCode.HT)]
		public byte HT;
		/// <summary>
		/// 10x0A 换行
		/// </summary>
		[DefaultValue(AsciiCode.LF)]
		public byte LF;
		/// <summary>
		/// 11x0B 垂直制表符
		/// </summary>
		[DefaultValue(AsciiCode.VT)]
		public byte VT;
		/// <summary>
		/// 12x0C 换页/换页键
		/// </summary>
		[DefaultValue(AsciiCode.FF)]
		public byte FF;
		/// <summary>
		/// 13x0D 回车/回车键
		/// </summary>
		[DefaultValue(AsciiCode.CR)]
		public byte CR;
		/// <summary>
		/// 14x0E 不用切换
		/// </summary>
		[DefaultValue(AsciiCode.SO)]
		public byte SO;
		/// <summary>
		/// 15x0F 启用切换
		/// </summary>
		[DefaultValue(AsciiCode.SI)]
		public byte SI;
		/// <summary>
		/// 16x10 数据链路转义
		/// </summary>
		[DefaultValue(AsciiCode.DLE)]
		public byte DLE;
		/// <summary>
		/// 17x11 设备控制1
		/// </summary>
		[DefaultValue(AsciiCode.DC1)]
		public byte DC1;
		/// <summary>
		/// 18x11 设备控制2
		/// </summary>
		[DefaultValue(AsciiCode.DC2)]
		public byte DC2;
		/// <summary>
		/// 19x13 设备控制3
		/// </summary>
		[DefaultValue(AsciiCode.DC3)]
		public byte DC3;
		/// <summary>
		/// 20x14 设备控制4
		/// </summary>
		[DefaultValue(AsciiCode.DC4)]
		public byte DC4;
		/// <summary>
		/// 21x15 拒绝接收
		/// </summary>
		[DefaultValue(AsciiCode.NAK)]
		public byte NAK;
		/// <summary>
		/// 22x16 同步空闲
		/// </summary>
		[DefaultValue(AsciiCode.SYN)]
		public byte SYN;
		/// <summary>
		/// 23x17 传输块结束
		/// </summary>
		[DefaultValue(AsciiCode.ETB)]
		public byte ETB;
		/// <summary>
		/// 24x18 取消
		/// </summary>
		[DefaultValue(AsciiCode.CAN)]
		public byte CAN;
		/// <summary>
		/// 25x19 介质中断
		/// </summary>
		[DefaultValue(AsciiCode.EM)]
		public byte EM;
		/// <summary>
		/// 26x1A 替补
		/// </summary>
		[DefaultValue(AsciiCode.SUB)]
		public byte SUB;
		/// <summary>
		/// 27x1B 溢出
		/// </summary>
		[DefaultValue(AsciiCode.ESC)]
		public byte ESC;
		/// <summary>
		/// 28x1C 文件分割符
		/// </summary>
		[DefaultValue(AsciiCode.FS)]
		public byte FS;
		/// <summary>
		/// 29x1D 分组符
		/// </summary>
		[DefaultValue(AsciiCode.GS)]
		public byte GS;
		/// <summary>
		/// 30x1E 记录分离符
		/// </summary>
		[DefaultValue(AsciiCode.RS)]
		public byte RS;
		/// <summary>
		/// 31x1F 单元分隔符
		/// </summary>
		[DefaultValue(AsciiCode.US)]
		public byte US;
		/// <summary>
		/// 32x20 空格
		/// </summary>
		[DefaultValue(AsciiCode.SP)]
		public byte SP;

		/// <summary>
		/// ! 33x21
		/// </summary>
		[DefaultValue(AsciiCode.EXCLAMATION)]
		public byte EXCLAMATION;
		/// <summary>
		/// &quot; 34x22
		/// </summary>
		[DefaultValue(AsciiCode.QUOTATION)]
		public byte QUOTATION;
		/// <summary>
		/// # 35x23
		/// </summary>
		[DefaultValue(AsciiCode.SHARP)]
		public byte SHARP;
		/// <summary>
		/// $ 36x24
		/// </summary>
		[DefaultValue(AsciiCode.DOLLAR)]
		public byte DOLLAR;
		/// <summary>
		/// % 37x25
		/// </summary>
		[DefaultValue(AsciiCode.PERCENT)]
		public byte PERCENT;
		/// <summary>
		/// &amp; 38x26
		/// </summary>
		[DefaultValue(AsciiCode.AMPERSAND)]
		public byte AMPERSAND;
		/// <summary>
		/// ' 39x27
		/// </summary>
		[DefaultValue(AsciiCode.APOSTROPHE)]
		public byte APOSTROPHE;
		/// <summary>
		/// ( Left parentheses 40x28
		/// </summary>
		[DefaultValue(AsciiCode.LP)]
		public byte LP;
		/// <summary>
		/// ) Right parentheses 41x29
		/// </summary>
		[DefaultValue(AsciiCode.RP)]
		public byte RP;
		/// <summary>
		/// * 42x2A
		/// </summary>
		[DefaultValue(AsciiCode.ASTERISK)]
		public byte ASTERISK;
		/// <summary>
		/// + 43x2B
		/// </summary>
		[DefaultValue(AsciiCode.PLUS)]
		public byte PLUS;
		/// <summary>
		/// , 44x2C
		/// </summary>
		[DefaultValue(AsciiCode.COMMA)]
		public byte COMMA;
		/// <summary>
		/// - 45x2D
		/// </summary>
		[DefaultValue(AsciiCode.MINUS)]
		public byte MINUS;
		/// <summary>
		/// . 46x2E
		/// </summary>
		[DefaultValue(AsciiCode.PERIOD)]
		public byte PERIOD;
		/// <summary>
		/// / 47x2F
		/// </summary>
		[DefaultValue(AsciiCode.SLASH)]
		public byte SLASH;

		/// <summary>
		/// 0 48x30
		/// </summary>
		[DefaultValue(AsciiCode.D0)]
		public byte D0;
		/// <summary>
		/// 1 49x31
		/// </summary>
		[DefaultValue(AsciiCode.D1)]
		public byte D1;
		/// <summary>
		/// 2 50x32
		/// </summary>
		[DefaultValue(AsciiCode.D2)]
		public byte D2;
		/// <summary>
		/// 3 51x33
		/// </summary>
		[DefaultValue(AsciiCode.D3)]
		public byte D3;
		/// <summary>
		/// 4 52x34
		/// </summary>
		[DefaultValue(AsciiCode.D4)]
		public byte D4;
		/// <summary>
		/// 5 53x35
		/// </summary>
		[DefaultValue(AsciiCode.D5)]
		public byte D5;
		/// <summary>
		/// 6 54x36
		/// </summary>
		[DefaultValue(AsciiCode.D6)]
		public byte D6;
		/// <summary>
		/// 7 55x37
		/// </summary>
		[DefaultValue(AsciiCode.D7)]
		public byte D7;
		/// <summary>
		/// 8 56x38
		/// </summary>
		[DefaultValue(AsciiCode.D8)]
		public byte D8;
		/// <summary>
		/// 9 57x39
		/// </summary>
		[DefaultValue(AsciiCode.D9)]
		public byte D9;

		/// <summary>
		/// : 58x3A
		/// </summary>
		[DefaultValue(AsciiCode.COLON)]
		public byte COLON;
		/// <summary>
		/// ; 59x3B
		/// </summary>
		[DefaultValue(AsciiCode.SEMICOLON)]
		public byte SEMICOLON;
		/// <summary>
		/// &lt; less-than 60x3C
		/// </summary>
		[DefaultValue(AsciiCode.LT)]
		public byte LT;
		/// <summary>
		/// = 61x3D
		/// </summary>
		[DefaultValue(AsciiCode.EQUAL)]
		public byte EQUAL;
		/// <summary>
		/// &gt; greater-than 62x3E
		/// </summary>
		[DefaultValue(AsciiCode.GT)]
		public byte GT;
		/// <summary>
		/// ? 63x3F
		/// </summary>
		[DefaultValue(AsciiCode.QUESTION)]
		public byte QUESTION;
		/// <summary>
		/// @ 64x40
		/// </summary>
		[DefaultValue(AsciiCode.AT)]
		public byte AT;

		/// <summary>
		/// A 65x41
		/// </summary>
		[DefaultValue(AsciiCode.A)]
		public byte A;
		/// <summary>
		/// B 66x42
		/// </summary>
		[DefaultValue(AsciiCode.B)]
		public byte B;
		/// <summary>
		/// C 67x43
		/// </summary>
		[DefaultValue(AsciiCode.C)]
		public byte C;
		/// <summary>
		/// D 68x44
		/// </summary>
		[DefaultValue(AsciiCode.D)]
		public byte D;
		/// <summary>
		/// E 69x45
		/// </summary>
		[DefaultValue(AsciiCode.E)]
		public byte E;
		/// <summary>
		/// F 70x46
		/// </summary>
		[DefaultValue(AsciiCode.F)]
		public byte F;
		/// <summary>
		/// G 71x47
		/// </summary>
		[DefaultValue(AsciiCode.G)]
		public byte G;
		/// <summary>
		/// H 72x48
		/// </summary>
		[DefaultValue(AsciiCode.H)]
		public byte H;
		/// <summary>
		/// I 73x49
		/// </summary>
		[DefaultValue(AsciiCode.I)]
		public byte I;
		/// <summary>
		/// J 74x4A
		/// </summary>
		[DefaultValue(AsciiCode.J)]
		public byte J;
		/// <summary>
		/// K 75x4B
		/// </summary>
		[DefaultValue(AsciiCode.K)]
		public byte K;
		/// <summary>
		/// L 76x4C
		/// </summary>
		[DefaultValue(AsciiCode.L)]
		public byte L;
		/// <summary>
		/// M 77x4D
		/// </summary>
		[DefaultValue(AsciiCode.M)]
		public byte M;
		/// <summary>
		/// N 78x4E
		/// </summary>
		[DefaultValue(AsciiCode.N)]
		public byte N;
		/// <summary>
		/// O 79x4F
		/// </summary>
		[DefaultValue(AsciiCode.O)]
		public byte O;
		/// <summary>
		/// P 80x50
		/// </summary>
		[DefaultValue(AsciiCode.P)]
		public byte P;
		/// <summary>
		/// Q 81x51
		/// </summary>
		[DefaultValue(AsciiCode.Q)]
		public byte Q;
		/// <summary>
		/// R 82x52
		/// </summary>
		[DefaultValue(AsciiCode.R)]
		public byte R;
		/// <summary>
		/// S 83x53
		/// </summary>
		[DefaultValue(AsciiCode.S)]
		public byte S;
		/// <summary>
		/// T 84x54
		/// </summary>
		[DefaultValue(AsciiCode.T)]
		public byte T;
		/// <summary>
		/// U 85x55
		/// </summary>
		[DefaultValue(AsciiCode.U)]
		public byte U;
		/// <summary>
		/// V 86x56
		/// </summary>
		[DefaultValue(AsciiCode.V)]
		public byte V;
		/// <summary>
		/// W 87x57
		/// </summary>
		[DefaultValue(AsciiCode.W)]
		public byte W;
		/// <summary>
		/// X 88x58
		/// </summary>
		[DefaultValue(AsciiCode.X)]
		public byte X;
		/// <summary>
		/// Y 89x59
		/// </summary>
		[DefaultValue(AsciiCode.Y)]
		public byte Y;
		/// <summary>
		/// Z 90x5A
		/// </summary>
		[DefaultValue(AsciiCode.Z)]
		public byte Z;

		/// <summary>
		/// [ Left square 91x5B
		/// </summary>
		[DefaultValue(AsciiCode.LSB)]
		public byte LSB;
		/// <summary>
		/// \ 92x5C
		/// </summary>
		[DefaultValue(AsciiCode.BACKSLASH)]
		public byte BACKSLASH;
		/// <summary>
		/// ] Right square 93x5D
		/// </summary>
		[DefaultValue(AsciiCode.RSB)]
		public byte RSB;
		/// <summary>
		/// ^ 94x5E
		/// </summary>
		[DefaultValue(AsciiCode.CIRCUMFLEX)]
		public byte CIRCUMFLEX;
		/// <summary>
		/// _ 95x5F
		/// </summary>
		[DefaultValue(AsciiCode.UNDERSCORE)]
		public byte UNDERSCORE;
		/// <summary>
		/// ` 96x60
		/// </summary>
		[DefaultValue(AsciiCode.BACKTICK)]
		public byte BACKTICK;

		/// <summary>
		/// a 97x61
		/// </summary>
		[DefaultValue(AsciiCode.a)]
		public byte a;
		/// <summary>
		/// b 98x62
		/// </summary>
		[DefaultValue(AsciiCode.b)]
		public byte b;
		/// <summary>
		/// c 99x63
		/// </summary>
		[DefaultValue(AsciiCode.c)]
		public byte c;
		/// <summary>
		/// d 100x64
		/// </summary>
		[DefaultValue(AsciiCode.d)]
		public byte d;
		/// <summary>
		/// e 101x65
		/// </summary>
		[DefaultValue(AsciiCode.e)]
		public byte e;
		/// <summary>
		/// f 102x66
		/// </summary>
		[DefaultValue(AsciiCode.f)]
		public byte f;
		/// <summary>
		/// g 103x67
		/// </summary>
		[DefaultValue(AsciiCode.g)]
		public byte g;
		/// <summary>
		/// h 104x68
		/// </summary>
		[DefaultValue(AsciiCode.h)]
		public byte h;
		/// <summary>
		/// i 105x69
		/// </summary>
		[DefaultValue(AsciiCode.i)]
		public byte i;
		/// <summary>
		/// j 106x6A
		/// </summary>
		[DefaultValue(AsciiCode.j)]
		public byte j;
		/// <summary>
		/// k 107x6B
		/// </summary>
		[DefaultValue(AsciiCode.k)]
		public byte k;
		/// <summary>
		/// l 108x6C
		/// </summary>
		[DefaultValue(AsciiCode.l)]
		public byte l;
		/// <summary>
		/// m 109x6D
		/// </summary>
		[DefaultValue(AsciiCode.m)]
		public byte m;
		/// <summary>
		/// n 110x6E
		/// </summary>
		[DefaultValue(AsciiCode.n)]
		public byte n;
		/// <summary>
		/// o 111x6F
		/// </summary>
		[DefaultValue(AsciiCode.o)]
		public byte o;
		/// <summary>
		/// p 112x70
		/// </summary>
		[DefaultValue(AsciiCode.p)]
		public byte p;
		/// <summary>
		/// q 113x71
		/// </summary>
		[DefaultValue(AsciiCode.q)]
		public byte q;
		/// <summary>
		/// r 114x72
		/// </summary>
		[DefaultValue(AsciiCode.r)]
		public byte r;
		/// <summary>
		/// s 115x73
		/// </summary>
		[DefaultValue(AsciiCode.s)]
		public byte s;
		/// <summary>
		/// t 116x74
		/// </summary>
		[DefaultValue(AsciiCode.t)]
		public byte t;
		/// <summary>
		/// u 117x75
		/// </summary>
		[DefaultValue(AsciiCode.u)]
		public byte u;
		/// <summary>
		/// v 118x76
		/// </summary>
		[DefaultValue(AsciiCode.v)]
		public byte v;
		/// <summary>
		/// w 119x77
		/// </summary>
		[DefaultValue(AsciiCode.w)]
		public byte w;
		/// <summary>
		/// x 120x78
		/// </summary>
		[DefaultValue(AsciiCode.x)]
		public byte x;
		/// <summary>
		/// y 121x79
		/// </summary>
		[DefaultValue(AsciiCode.y)]
		public byte y;
		/// <summary>
		/// z 122x7A
		/// </summary>
		[DefaultValue(AsciiCode.z)]
		public byte z;

		/// <summary>
		/// { Left brace 123x7B
		/// </summary>
		[DefaultValue(AsciiCode.LBB)]
		public byte LBB;
		/// <summary>
		/// | 124x7C
		/// </summary>
		[DefaultValue(AsciiCode.VERTICAL)]
		public byte VERTICAL;
		/// <summary>
		/// } Right brace 125x7D
		/// </summary>
		[DefaultValue(AsciiCode.RBB)]
		public byte RBB;
		/// <summary>
		/// ~ 126x7E
		/// </summary>
		[DefaultValue(AsciiCode.TILDE)]
		public byte TILDE;
		/// <summary>
		/// 127x7F 删除
		/// </summary>
		[DefaultValue(AsciiCode.DEL)]
		public byte DEL;

		#endregion
	}

	/// <summary>
	/// 
	/// </summary>
	[StructLayout(LayoutKind.Sequential)]
	public class AsciiSimple<ITEM> : IEnumerable<ITEM>, ICollection
	{
		private static HAction<AsciiSimple<ITEM>, int, ITEM> Setter;

		private static HAction<AsciiSimple<ITEM>, int, ITEM> Getter;

		private static void CreateHandler()
		{
			if (Setter != null && Getter != null)
				return;

			var ss = new SwitchCase[sbyte.MaxValue + 1];
			var gs = new SwitchCase[sbyte.MaxValue + 1];
			var fs = typeof(AsciiSimple<ITEM>).GetFields();
			var eo = Expression.Parameter(typeof(AsciiSimple<ITEM>).MakeByRefType(), "me");
			var ei = Expression.Parameter(typeof(int).MakeByRefType(), "index");
			var ev = Expression.Parameter(typeof(ITEM).MakeByRefType(), "value");
			var el = Expression.Label();
			for (var i = 0; i <= sbyte.MaxValue; i++)
			{
				for (var ii = fs.Length - 1; ii >= 0; ii--)
				{
					var vs = fs[ii].GetCustomAttributes(typeof(DefaultValueAttribute), true) as DefaultValueAttribute[];
					if (vs != null && vs.Length > 0 && object.Equals((byte)i, vs[0].Value))
					{
						ss[i] = Expression.SwitchCase(Expression.Block(Expression.Assign(Expression.Field(eo, fs[ii]), ev), Expression.Return(el)), Expression.Constant(i));
						gs[i] = Expression.SwitchCase(Expression.Block(Expression.Assign(ev, Expression.Field(eo, fs[ii])), Expression.Return(el)), Expression.Constant(i));
					}
				}
			}
			Setter = Expression.Lambda<HAction<AsciiSimple<ITEM>, int, ITEM>>(Expression.Block(Expression.Switch(ei, ss), Expression.Throw(Expression.New(typeof(ArgumentOutOfRangeException))), Expression.Label(el)), eo, ei, ev).Compile();
			Getter = Expression.Lambda<HAction<AsciiSimple<ITEM>, int, ITEM>>(Expression.Block(Expression.Switch(ei, gs), Expression.Throw(Expression.New(typeof(ArgumentOutOfRangeException))), Expression.Label(el)), eo, ei, ev).Compile();
		}

		/// <summary>
		/// 
		/// </summary>
		/// <param name="index"></param>
		/// <returns></returns>
		public ITEM this[int index]
		{
			set
			{
				var me = this;
				if (Setter == null)
					CreateHandler();
				Setter(ref me, ref index, ref value);
			}
			get
			{
				var me = this;
				var v = Reflector<ITEM>.DefaultValue;
				if (Getter == null)
					CreateHandler();
				Getter(ref me, ref index, ref v);
				return v;
			}
		}

		int ICollection.Count
		{
			get
			{
				return BitUtil.B08_07;
			}
		}

		bool ICollection.IsSynchronized
		{
			get
			{
				return false;
			}
		}

		object ICollection.SyncRoot
		{
			get
			{
				return null;
			}
		}

		void ICollection.CopyTo(Array array, int index)
		{
			foreach (var item in (IEnumerable)this)
				array.SetValue(item, index++);
		}

		IEnumerator<ITEM> IEnumerable<ITEM>.GetEnumerator()
		{
			return this.GetEnumerator();
		}

		IEnumerator IEnumerable.GetEnumerator()
		{
			return this.GetEnumerator();
		}

		private IEnumerator<ITEM> GetEnumerator()
		{
			yield return this.NUL;
			yield return this.SOH;
			yield return this.STX;
			yield return this.ETX;
			yield return this.EOT;
			yield return this.ENQ;
			yield return this.ACK;
			yield return this.BEL;
			yield return this.BS;
			yield return this.HT;
			yield return this.LF;
			yield return this.VT;
			yield return this.FF;
			yield return this.CR;
			yield return this.SO;
			yield return this.SI;
			yield return this.DLE;
			yield return this.DC1;
			yield return this.DC2;
			yield return this.DC3;
			yield return this.DC4;
			yield return this.NAK;
			yield return this.SYN;
			yield return this.ETB;
			yield return this.CAN;
			yield return this.EM;
			yield return this.SUB;
			yield return this.ESC;
			yield return this.FS;
			yield return this.GS;
			yield return this.RS;
			yield return this.US;

			yield return this.SP;
			yield return this.EXCLAMATION;
			yield return this.QUOTATION;
			yield return this.SHARP;
			yield return this.DOLLAR;
			yield return this.PERCENT;
			yield return this.AMPERSAND;
			yield return this.APOSTROPHE;
			yield return this.LP;
			yield return this.RP;
			yield return this.ASTERISK;
			yield return this.PLUS;
			yield return this.COMMA;
			yield return this.MINUS;
			yield return this.PERIOD;
			yield return this.SLASH;

			yield return this.D0;
			yield return this.D1;
			yield return this.D2;
			yield return this.D3;
			yield return this.D4;
			yield return this.D5;
			yield return this.D6;
			yield return this.D7;
			yield return this.D8;
			yield return this.D9;

			yield return this.COLON;
			yield return this.SEMICOLON;
			yield return this.LT;
			yield return this.EQUAL;
			yield return this.GT;
			yield return this.QUESTION;
			yield return this.AT;

			yield return this.A;
			yield return this.B;
			yield return this.C;
			yield return this.D;
			yield return this.E;
			yield return this.F;
			yield return this.G;
			yield return this.H;
			yield return this.I;
			yield return this.J;
			yield return this.K;
			yield return this.L;
			yield return this.M;
			yield return this.N;
			yield return this.O;
			yield return this.P;
			yield return this.Q;
			yield return this.R;
			yield return this.S;
			yield return this.T;
			yield return this.U;
			yield return this.V;
			yield return this.W;
			yield return this.X;
			yield return this.Y;
			yield return this.Z;

			yield return this.LSB;
			yield return this.BACKSLASH;
			yield return this.RSB;
			yield return this.CIRCUMFLEX;
			yield return this.UNDERSCORE;
			yield return this.BACKTICK;

			yield return this.a;
			yield return this.b;
			yield return this.c;
			yield return this.d;
			yield return this.e;
			yield return this.f;
			yield return this.g;
			yield return this.h;
			yield return this.i;
			yield return this.j;
			yield return this.k;
			yield return this.l;
			yield return this.m;
			yield return this.n;
			yield return this.o;
			yield return this.p;
			yield return this.q;
			yield return this.r;
			yield return this.s;
			yield return this.t;
			yield return this.u;
			yield return this.v;
			yield return this.w;
			yield return this.x;
			yield return this.y;
			yield return this.z;

			yield return this.LBB;
			yield return this.VERTICAL;
			yield return this.RBB;
			yield return this.TILDE;
			yield return this.DEL;
		}

		#region Items

		/// <summary>
		/// 0x00 空字符
		/// </summary>
		[DefaultValue(AsciiCode.NUL)]
		public ITEM NUL;
		/// <summary>
		/// 1x01 文头/标题开始/传输开始
		/// </summary>
		[DefaultValue(AsciiCode.SOH)]
		public ITEM SOH;
		/// <summary>
		/// 2x02 正文开始
		/// </summary>
		[DefaultValue(AsciiCode.STX)]
		public ITEM STX;
		/// <summary>
		/// 3x03 正文结束
		/// </summary>
		[DefaultValue(AsciiCode.ETX)]
		public ITEM ETX;
		/// <summary>
		/// 4x04 文尾/传输结束
		/// </summary>
		[DefaultValue(AsciiCode.EOT)]
		public ITEM EOT;
		/// <summary>
		/// 5x05 请求
		/// </summary>
		[DefaultValue(AsciiCode.ENQ)]
		public ITEM ENQ;
		/// <summary>
		/// 6x06 确认/收到通知
		/// </summary>
		[DefaultValue(AsciiCode.ACK)]
		public ITEM ACK;
		/// <summary>
		/// 7x07 振铃/响铃
		/// </summary>
		[DefaultValue(AsciiCode.BEL)]
		public ITEM BEL;
		/// <summary>
		/// 8x08 退格
		/// </summary>
		[DefaultValue(AsciiCode.BS)]
		public ITEM BS;
		/// <summary>
		/// 9x09 制表/水平制表符
		/// </summary>
		[DefaultValue(AsciiCode.HT)]
		public ITEM HT;
		/// <summary>
		/// 10x0A 换行
		/// </summary>
		[DefaultValue(AsciiCode.LF)]
		public ITEM LF;
		/// <summary>
		/// 11x0B 垂直制表符
		/// </summary>
		[DefaultValue(AsciiCode.VT)]
		public ITEM VT;
		/// <summary>
		/// 12x0C 换页/换页键
		/// </summary>
		[DefaultValue(AsciiCode.FF)]
		public ITEM FF;
		/// <summary>
		/// 13x0D 回车/回车键
		/// </summary>
		[DefaultValue(AsciiCode.CR)]
		public ITEM CR;
		/// <summary>
		/// 14x0E 不用切换
		/// </summary>
		[DefaultValue(AsciiCode.SO)]
		public ITEM SO;
		/// <summary>
		/// 15x0F 启用切换
		/// </summary>
		[DefaultValue(AsciiCode.SI)]
		public ITEM SI;
		/// <summary>
		/// 16x10 数据链路转义
		/// </summary>
		[DefaultValue(AsciiCode.DLE)]
		public ITEM DLE;
		/// <summary>
		/// 17x11 设备控制1
		/// </summary>
		[DefaultValue(AsciiCode.DC1)]
		public ITEM DC1;
		/// <summary>
		/// 18x11 设备控制2
		/// </summary>
		[DefaultValue(AsciiCode.DC2)]
		public ITEM DC2;
		/// <summary>
		/// 19x13 设备控制3
		/// </summary>
		[DefaultValue(AsciiCode.DC3)]
		public ITEM DC3;
		/// <summary>
		/// 20x14 设备控制4
		/// </summary>
		[DefaultValue(AsciiCode.DC4)]
		public ITEM DC4;
		/// <summary>
		/// 21x15 拒绝接收
		/// </summary>
		[DefaultValue(AsciiCode.NAK)]
		public ITEM NAK;
		/// <summary>
		/// 22x16 同步空闲
		/// </summary>
		[DefaultValue(AsciiCode.SYN)]
		public ITEM SYN;
		/// <summary>
		/// 23x17 传输块结束
		/// </summary>
		[DefaultValue(AsciiCode.ETB)]
		public ITEM ETB;
		/// <summary>
		/// 24x18 取消
		/// </summary>
		[DefaultValue(AsciiCode.CAN)]
		public ITEM CAN;
		/// <summary>
		/// 25x19 介质中断
		/// </summary>
		[DefaultValue(AsciiCode.EM)]
		public ITEM EM;
		/// <summary>
		/// 26x1A 替补
		/// </summary>
		[DefaultValue(AsciiCode.SUB)]
		public ITEM SUB;
		/// <summary>
		/// 27x1B 溢出
		/// </summary>
		[DefaultValue(AsciiCode.ESC)]
		public ITEM ESC;
		/// <summary>
		/// 28x1C 文件分割符
		/// </summary>
		[DefaultValue(AsciiCode.FS)]
		public ITEM FS;
		/// <summary>
		/// 29x1D 分组符
		/// </summary>
		[DefaultValue(AsciiCode.GS)]
		public ITEM GS;
		/// <summary>
		/// 30x1E 记录分离符
		/// </summary>
		[DefaultValue(AsciiCode.RS)]
		public ITEM RS;
		/// <summary>
		/// 31x1F 单元分隔符
		/// </summary>
		[DefaultValue(AsciiCode.US)]
		public ITEM US;
		/// <summary>
		/// 32x20 空格
		/// </summary>
		[DefaultValue(AsciiCode.SP)]
		public ITEM SP;

		/// <summary>
		/// ! 33x21
		/// </summary>
		[DefaultValue(AsciiCode.EXCLAMATION)]
		public ITEM EXCLAMATION;
		/// <summary>
		/// &quot; 34x22
		/// </summary>
		[DefaultValue(AsciiCode.QUOTATION)]
		public ITEM QUOTATION;
		/// <summary>
		/// # 35x23
		/// </summary>
		[DefaultValue(AsciiCode.SHARP)]
		public ITEM SHARP;
		/// <summary>
		/// $ 36x24
		/// </summary>
		[DefaultValue(AsciiCode.DOLLAR)]
		public ITEM DOLLAR;
		/// <summary>
		/// % 37x25
		/// </summary>
		[DefaultValue(AsciiCode.PERCENT)]
		public ITEM PERCENT;
		/// <summary>
		/// &amp; 38x26
		/// </summary>
		[DefaultValue(AsciiCode.AMPERSAND)]
		public ITEM AMPERSAND;
		/// <summary>
		/// ' 39x27
		/// </summary>
		[DefaultValue(AsciiCode.APOSTROPHE)]
		public ITEM APOSTROPHE;
		/// <summary>
		/// ( Left parentheses 40x28
		/// </summary>
		[DefaultValue(AsciiCode.LP)]
		public ITEM LP;
		/// <summary>
		/// ) Right parentheses 41x29
		/// </summary>
		[DefaultValue(AsciiCode.RP)]
		public ITEM RP;
		/// <summary>
		/// * 42x2A
		/// </summary>
		[DefaultValue(AsciiCode.ASTERISK)]
		public ITEM ASTERISK;
		/// <summary>
		/// + 43x2B
		/// </summary>
		[DefaultValue(AsciiCode.PLUS)]
		public ITEM PLUS;
		/// <summary>
		/// , 44x2C
		/// </summary>
		[DefaultValue(AsciiCode.COMMA)]
		public ITEM COMMA;
		/// <summary>
		/// - 45x2D
		/// </summary>
		[DefaultValue(AsciiCode.MINUS)]
		public ITEM MINUS;
		/// <summary>
		/// . 46x2E
		/// </summary>
		[DefaultValue(AsciiCode.PERIOD)]
		public ITEM PERIOD;
		/// <summary>
		/// / 47x2F
		/// </summary>
		[DefaultValue(AsciiCode.SLASH)]
		public ITEM SLASH;

		/// <summary>
		/// 0 48x30
		/// </summary>
		[DefaultValue(AsciiCode.D0)]
		public ITEM D0;
		/// <summary>
		/// 1 49x31
		/// </summary>
		[DefaultValue(AsciiCode.D1)]
		public ITEM D1;
		/// <summary>
		/// 2 50x32
		/// </summary>
		[DefaultValue(AsciiCode.D2)]
		public ITEM D2;
		/// <summary>
		/// 3 51x33
		/// </summary>
		[DefaultValue(AsciiCode.D3)]
		public ITEM D3;
		/// <summary>
		/// 4 52x34
		/// </summary>
		[DefaultValue(AsciiCode.D4)]
		public ITEM D4;
		/// <summary>
		/// 5 53x35
		/// </summary>
		[DefaultValue(AsciiCode.D5)]
		public ITEM D5;
		/// <summary>
		/// 6 54x36
		/// </summary>
		[DefaultValue(AsciiCode.D6)]
		public ITEM D6;
		/// <summary>
		/// 7 55x37
		/// </summary>
		[DefaultValue(AsciiCode.D7)]
		public ITEM D7;
		/// <summary>
		/// 8 56x38
		/// </summary>
		[DefaultValue(AsciiCode.D8)]
		public ITEM D8;
		/// <summary>
		/// 9 57x39
		/// </summary>
		[DefaultValue(AsciiCode.D9)]
		public ITEM D9;

		/// <summary>
		/// : 58x3A
		/// </summary>
		[DefaultValue(AsciiCode.COLON)]
		public ITEM COLON;
		/// <summary>
		/// ; 59x3B
		/// </summary>
		[DefaultValue(AsciiCode.SEMICOLON)]
		public ITEM SEMICOLON;
		/// <summary>
		/// &lt; less-than 60x3C
		/// </summary>
		[DefaultValue(AsciiCode.LT)]
		public ITEM LT;
		/// <summary>
		/// = 61x3D
		/// </summary>
		[DefaultValue(AsciiCode.EQUAL)]
		public ITEM EQUAL;
		/// <summary>
		/// &gt; greater-than 62x3E
		/// </summary>
		[DefaultValue(AsciiCode.GT)]
		public ITEM GT;
		/// <summary>
		/// ? 63x3F
		/// </summary>
		[DefaultValue(AsciiCode.QUESTION)]
		public ITEM QUESTION;
		/// <summary>
		/// @ 64x40
		/// </summary>
		[DefaultValue(AsciiCode.AT)]
		public ITEM AT;

		/// <summary>
		/// A 65x41
		/// </summary>
		[DefaultValue(AsciiCode.A)]
		public ITEM A;
		/// <summary>
		/// B 66x42
		/// </summary>
		[DefaultValue(AsciiCode.B)]
		public ITEM B;
		/// <summary>
		/// C 67x43
		/// </summary>
		[DefaultValue(AsciiCode.C)]
		public ITEM C;
		/// <summary>
		/// D 68x44
		/// </summary>
		[DefaultValue(AsciiCode.D)]
		public ITEM D;
		/// <summary>
		/// E 69x45
		/// </summary>
		[DefaultValue(AsciiCode.E)]
		public ITEM E;
		/// <summary>
		/// F 70x46
		/// </summary>
		[DefaultValue(AsciiCode.F)]
		public ITEM F;
		/// <summary>
		/// G 71x47
		/// </summary>
		[DefaultValue(AsciiCode.G)]
		public ITEM G;
		/// <summary>
		/// H 72x48
		/// </summary>
		[DefaultValue(AsciiCode.H)]
		public ITEM H;
		/// <summary>
		/// I 73x49
		/// </summary>
		[DefaultValue(AsciiCode.I)]
		public ITEM I;
		/// <summary>
		/// J 74x4A
		/// </summary>
		[DefaultValue(AsciiCode.J)]
		public ITEM J;
		/// <summary>
		/// K 75x4B
		/// </summary>
		[DefaultValue(AsciiCode.K)]
		public ITEM K;
		/// <summary>
		/// L 76x4C
		/// </summary>
		[DefaultValue(AsciiCode.L)]
		public ITEM L;
		/// <summary>
		/// M 77x4D
		/// </summary>
		[DefaultValue(AsciiCode.M)]
		public ITEM M;
		/// <summary>
		/// N 78x4E
		/// </summary>
		[DefaultValue(AsciiCode.N)]
		public ITEM N;
		/// <summary>
		/// O 79x4F
		/// </summary>
		[DefaultValue(AsciiCode.O)]
		public ITEM O;
		/// <summary>
		/// P 80x50
		/// </summary>
		[DefaultValue(AsciiCode.P)]
		public ITEM P;
		/// <summary>
		/// Q 81x51
		/// </summary>
		[DefaultValue(AsciiCode.Q)]
		public ITEM Q;
		/// <summary>
		/// R 82x52
		/// </summary>
		[DefaultValue(AsciiCode.R)]
		public ITEM R;
		/// <summary>
		/// S 83x53
		/// </summary>
		[DefaultValue(AsciiCode.S)]
		public ITEM S;
		/// <summary>
		/// T 84x54
		/// </summary>
		[DefaultValue(AsciiCode.T)]
		public ITEM T;
		/// <summary>
		/// U 85x55
		/// </summary>
		[DefaultValue(AsciiCode.U)]
		public ITEM U;
		/// <summary>
		/// V 86x56
		/// </summary>
		[DefaultValue(AsciiCode.V)]
		public ITEM V;
		/// <summary>
		/// W 87x57
		/// </summary>
		[DefaultValue(AsciiCode.W)]
		public ITEM W;
		/// <summary>
		/// X 88x58
		/// </summary>
		[DefaultValue(AsciiCode.X)]
		public ITEM X;
		/// <summary>
		/// Y 89x59
		/// </summary>
		[DefaultValue(AsciiCode.Y)]
		public ITEM Y;
		/// <summary>
		/// Z 90x5A
		/// </summary>
		[DefaultValue(AsciiCode.Z)]
		public ITEM Z;

		/// <summary>
		/// [ Left square 91x5B
		/// </summary>
		[DefaultValue(AsciiCode.LSB)]
		public ITEM LSB;
		/// <summary>
		/// \ 92x5C
		/// </summary>
		[DefaultValue(AsciiCode.BACKSLASH)]
		public ITEM BACKSLASH;
		/// <summary>
		/// ] Right square 93x5D
		/// </summary>
		[DefaultValue(AsciiCode.RSB)]
		public ITEM RSB;
		/// <summary>
		/// ^ 94x5E
		/// </summary>
		[DefaultValue(AsciiCode.CIRCUMFLEX)]
		public ITEM CIRCUMFLEX;
		/// <summary>
		/// _ 95x5F
		/// </summary>
		[DefaultValue(AsciiCode.UNDERSCORE)]
		public ITEM UNDERSCORE;
		/// <summary>
		/// ` 96x60
		/// </summary>
		[DefaultValue(AsciiCode.BACKTICK)]
		public ITEM BACKTICK;

		/// <summary>
		/// a 97x61
		/// </summary>
		[DefaultValue(AsciiCode.a)]
		public ITEM a;
		/// <summary>
		/// b 98x62
		/// </summary>
		[DefaultValue(AsciiCode.b)]
		public ITEM b;
		/// <summary>
		/// c 99x63
		/// </summary>
		[DefaultValue(AsciiCode.c)]
		public ITEM c;
		/// <summary>
		/// d 100x64
		/// </summary>
		[DefaultValue(AsciiCode.d)]
		public ITEM d;
		/// <summary>
		/// e 101x65
		/// </summary>
		[DefaultValue(AsciiCode.e)]
		public ITEM e;
		/// <summary>
		/// f 102x66
		/// </summary>
		[DefaultValue(AsciiCode.f)]
		public ITEM f;
		/// <summary>
		/// g 103x67
		/// </summary>
		[DefaultValue(AsciiCode.g)]
		public ITEM g;
		/// <summary>
		/// h 104x68
		/// </summary>
		[DefaultValue(AsciiCode.h)]
		public ITEM h;
		/// <summary>
		/// i 105x69
		/// </summary>
		[DefaultValue(AsciiCode.i)]
		public ITEM i;
		/// <summary>
		/// j 106x6A
		/// </summary>
		[DefaultValue(AsciiCode.j)]
		public ITEM j;
		/// <summary>
		/// k 107x6B
		/// </summary>
		[DefaultValue(AsciiCode.k)]
		public ITEM k;
		/// <summary>
		/// l 108x6C
		/// </summary>
		[DefaultValue(AsciiCode.l)]
		public ITEM l;
		/// <summary>
		/// m 109x6D
		/// </summary>
		[DefaultValue(AsciiCode.m)]
		public ITEM m;
		/// <summary>
		/// n 110x6E
		/// </summary>
		[DefaultValue(AsciiCode.n)]
		public ITEM n;
		/// <summary>
		/// o 111x6F
		/// </summary>
		[DefaultValue(AsciiCode.o)]
		public ITEM o;
		/// <summary>
		/// p 112x70
		/// </summary>
		[DefaultValue(AsciiCode.p)]
		public ITEM p;
		/// <summary>
		/// q 113x71
		/// </summary>
		[DefaultValue(AsciiCode.q)]
		public ITEM q;
		/// <summary>
		/// r 114x72
		/// </summary>
		[DefaultValue(AsciiCode.r)]
		public ITEM r;
		/// <summary>
		/// s 115x73
		/// </summary>
		[DefaultValue(AsciiCode.s)]
		public ITEM s;
		/// <summary>
		/// t 116x74
		/// </summary>
		[DefaultValue(AsciiCode.t)]
		public ITEM t;
		/// <summary>
		/// u 117x75
		/// </summary>
		[DefaultValue(AsciiCode.u)]
		public ITEM u;
		/// <summary>
		/// v 118x76
		/// </summary>
		[DefaultValue(AsciiCode.v)]
		public ITEM v;
		/// <summary>
		/// w 119x77
		/// </summary>
		[DefaultValue(AsciiCode.w)]
		public ITEM w;
		/// <summary>
		/// x 120x78
		/// </summary>
		[DefaultValue(AsciiCode.x)]
		public ITEM x;
		/// <summary>
		/// y 121x79
		/// </summary>
		[DefaultValue(AsciiCode.y)]
		public ITEM y;
		/// <summary>
		/// z 122x7A
		/// </summary>
		[DefaultValue(AsciiCode.z)]
		public ITEM z;

		/// <summary>
		/// { Left brace 123x7B
		/// </summary>
		[DefaultValue(AsciiCode.LBB)]
		public ITEM LBB;
		/// <summary>
		/// | 124x7C
		/// </summary>
		[DefaultValue(AsciiCode.VERTICAL)]
		public ITEM VERTICAL;
		/// <summary>
		/// } Right brace 125x7D
		/// </summary>
		[DefaultValue(AsciiCode.RBB)]
		public ITEM RBB;
		/// <summary>
		/// ~ 126x7E
		/// </summary>
		[DefaultValue(AsciiCode.TILDE)]
		public ITEM TILDE;
		/// <summary>
		/// 127x7F 删除
		/// </summary>
		[DefaultValue(AsciiCode.DEL)]
		public ITEM DEL;

		#endregion
	}

	#endregion

	#region AsciiChar

	/// <summary>
	/// 
	/// </summary>
	public static class AsciiChar
	{
		/// <summary>
		/// 0 空字符
		/// </summary>
		public const char NUL = (char)AsciiCode.NUL;
		/// <summary>
		/// 1 文头/标题开始/传输开始
		/// </summary>
		public const char SOH = (char)AsciiCode.SOH;
		/// <summary>
		/// 2 正文开始
		/// </summary>
		public const char STX = (char)AsciiCode.STX;
		/// <summary>
		/// 3 正文结束
		/// </summary>
		public const char ETX = (char)AsciiCode.ETX;
		/// <summary>
		/// 4 文尾/传输结束
		/// </summary>
		public const char EOT = (char)AsciiCode.EOT;
		/// <summary>
		/// 5 请求
		/// </summary>
		public const char ENQ = (char)AsciiCode.ENQ;
		/// <summary>
		/// 6 确认/收到通知
		/// </summary>
		public const char ACK = (char)AsciiCode.ACK;
		/// <summary>
		/// 7 振铃/响铃
		/// </summary>
		public const char BEL = (char)AsciiCode.BEL;
		/// <summary>
		/// 8 退格
		/// </summary>
		public const char BS = (char)AsciiCode.BS;
		/// <summary>
		/// 9 制表/水平制表符
		/// </summary>
		public const char HT = (char)AsciiCode.HT;
		/// <summary>
		/// 10 换行
		/// </summary>
		public const char LF = (char)AsciiCode.LF;
		/// <summary>
		/// 11 垂直制表符
		/// </summary>
		public const char VT = (char)AsciiCode.VT;
		/// <summary>
		/// 12 换页/换页键
		/// </summary>
		public const char FF = (char)AsciiCode.FF;
		/// <summary>
		/// 13 回车/回车键
		/// </summary>
		public const char CR = (char)AsciiCode.CR;
		/// <summary>
		/// 14 不用切换
		/// </summary>
		public const char SO = (char)AsciiCode.SO;
		/// <summary>
		/// 15 启用切换
		/// </summary>
		public const char SI = (char)AsciiCode.SI;
		/// <summary>
		/// 16 数据链路转义
		/// </summary>
		public const char DLE = (char)AsciiCode.DLE;
		/// <summary>
		/// 17 设备控制1
		/// </summary>
		public const char DC1 = (char)AsciiCode.DC1;
		/// <summary>
		/// 18 设备控制2
		/// </summary>
		public const char DC2 = (char)AsciiCode.DC2;
		/// <summary>
		/// 19 设备控制3
		/// </summary>
		public const char DC3 = (char)AsciiCode.DC3;
		/// <summary>
		/// 20 设备控制4
		/// </summary>
		public const char DC4 = (char)AsciiCode.DC4;
		/// <summary>
		/// 21 拒绝接收
		/// </summary>
		public const char NAK = (char)AsciiCode.NAK;
		/// <summary>
		/// 22 同步空闲
		/// </summary>
		public const char SYN = (char)AsciiCode.SYN;
		/// <summary>
		/// 23 传输块结束
		/// </summary>
		public const char ETB = (char)AsciiCode.ETB;
		/// <summary>
		/// 24 取消
		/// </summary>
		public const char CAN = (char)AsciiCode.CAN;
		/// <summary>
		/// 25 介质中断
		/// </summary>
		public const char EM = (char)AsciiCode.EM;
		/// <summary>
		/// 26 替补
		/// </summary>
		public const char SUB = (char)AsciiCode.SUB;
		/// <summary>
		/// 27 溢出
		/// </summary>
		public const char ESC = (char)AsciiCode.ESC;
		/// <summary>
		/// 28 文件分割符
		/// </summary>
		public const char FS = (char)AsciiCode.FS;
		/// <summary>
		/// 29 分组符
		/// </summary>
		public const char GS = (char)AsciiCode.GS;
		/// <summary>
		/// 30 记录分离符
		/// </summary>
		public const char RS = (char)AsciiCode.RS;
		/// <summary>
		/// 31 单元分隔符
		/// </summary>
		public const char US = (char)AsciiCode.US;
		/// <summary>
		/// 32 空格
		/// </summary>
		public const char SP = (char)AsciiCode.SP;

		/// <summary>
		/// ! 33 x21
		/// </summary>
		public const char EXCLAMATION = (char)AsciiCode.EXCLAMATION;// !
		/// <summary>
		/// " 34 x22
		/// </summary>
		public const char QUOTATION = (char)AsciiCode.QUOTATION;// "
		/// <summary>
		/// # 35 x23
		/// </summary>
		public const char SHARP = (char)AsciiCode.SHARP;// #
		/// <summary>
		/// $ 36 x24
		/// </summary>
		public const char DOLLAR = (char)AsciiCode.DOLLAR;// $
		/// <summary>
		/// % 37 x25
		/// </summary>
		public const char PERCENT = (char)AsciiCode.PERCENT;// %
		/// <summary>
		/// &amp; 38x26
		/// </summary>
		public const char AMPERSAND = (char)AsciiCode.AMPERSAND;// &
		/// <summary>
		/// ' 39 x27
		/// </summary>
		public const char APOSTROPHE = (char)AsciiCode.APOSTROPHE;// '
		/// <summary>
		/// ( 40 x28
		/// </summary>
		public const char LP = (char)AsciiCode.LP;// (
		/// <summary>
		/// ) 41 x29
		/// </summary>
		public const char RP = (char)AsciiCode.RP;// )
		/// <summary>
		/// * 42 x2A
		/// </summary>
		public const char ASTERISK = (char)AsciiCode.ASTERISK;// *
		/// <summary>
		/// + 43 x2B
		/// </summary>
		public const char PLUS = (char)AsciiCode.PLUS;// +
		/// <summary>
		/// , 44 x2C
		/// </summary>
		public const char COMMA = (char)AsciiCode.COMMA;// ,
		/// <summary>
		/// - 45 x2D
		/// </summary>
		public const char MINUS = (char)AsciiCode.MINUS;// -
		/// <summary>
		/// . 46 x2E
		/// </summary>
		public const char PERIOD = (char)AsciiCode.PERIOD;// .
		/// <summary>
		/// / 47 x2F
		/// </summary>
		public const char SLASH = (char)AsciiCode.SLASH;// /

		/// <summary>
		/// 0
		/// </summary>
		public const char D0 = (char)AsciiCode.D0;
		/// <summary>
		/// 1
		/// </summary>
		public const char D1 = (char)AsciiCode.D1;
		/// <summary>
		/// 2
		/// </summary>
		public const char D2 = (char)AsciiCode.D2;
		/// <summary>
		/// 3
		/// </summary>
		public const char D3 = (char)AsciiCode.D3;
		/// <summary>
		/// 4
		/// </summary>
		public const char D4 = (char)AsciiCode.D4;
		/// <summary>
		/// 5
		/// </summary>
		public const char D5 = (char)AsciiCode.D5;
		/// <summary>
		/// 6
		/// </summary>
		public const char D6 = (char)AsciiCode.D6;
		/// <summary>
		/// 7
		/// </summary>
		public const char D7 = (char)AsciiCode.D7;
		/// <summary>
		/// 8
		/// </summary>
		public const char D8 = (char)AsciiCode.D8;
		/// <summary>
		/// 9
		/// </summary>
		public const char D9 = (char)AsciiCode.D9;

		/// <summary>
		/// : 58 x3A
		/// </summary>
		public const char COLON = (char)AsciiCode.COLON;// :
		/// <summary>
		/// ; 59 x3B
		/// </summary>
		public const char SEMICOLON = (char)AsciiCode.SEMICOLON;// ;
		/// <summary>
		/// &lt; 60 x3C
		/// </summary>
		public const char LT = (char)AsciiCode.LT;// <
		/// <summary>
		/// = 61 x3D
		/// </summary>
		public const char EQUAL = (char)AsciiCode.EQUAL;// =
		/// <summary>
		/// &gt; 62 x3E
		/// </summary>
		public const char GT = (char)AsciiCode.GT;// >
		/// <summary>
		/// ? 63 x3F
		/// </summary>
		public const char QUESTION = (char)AsciiCode.QUESTION;// ?
		/// <summary>
		/// @ 64 x40
		/// </summary>
		public const char AT = (char)AsciiCode.AT;// @

		/// <summary>
		/// A
		/// </summary>
		public const char A = (char)AsciiCode.A;
		/// <summary>
		/// B
		/// </summary>
		public const char B = (char)AsciiCode.B;
		/// <summary>
		/// C
		/// </summary>
		public const char C = (char)AsciiCode.C;
		/// <summary>
		/// D
		/// </summary>
		public const char D = (char)AsciiCode.D;
		/// <summary>
		/// E
		/// </summary>
		public const char E = (char)AsciiCode.E;
		/// <summary>
		/// F
		/// </summary>
		public const char F = (char)AsciiCode.F;
		/// <summary>
		/// G
		/// </summary>
		public const char G = (char)AsciiCode.G;
		/// <summary>
		/// H
		/// </summary>
		public const char H = (char)AsciiCode.H;
		/// <summary>
		/// I
		/// </summary>
		public const char I = (char)AsciiCode.I;
		/// <summary>
		/// J
		/// </summary>
		public const char J = (char)AsciiCode.J;
		/// <summary>
		/// K
		/// </summary>
		public const char K = (char)AsciiCode.K;
		/// <summary>
		/// L
		/// </summary>
		public const char L = (char)AsciiCode.L;
		/// <summary>
		/// M
		/// </summary>
		public const char M = (char)AsciiCode.M;
		/// <summary>
		/// N
		/// </summary>
		public const char N = (char)AsciiCode.N;
		/// <summary>
		/// O
		/// </summary>
		public const char O = (char)AsciiCode.O;
		/// <summary>
		/// P
		/// </summary>
		public const char P = (char)AsciiCode.P;
		/// <summary>
		/// Q
		/// </summary>
		public const char Q = (char)AsciiCode.Q;
		/// <summary>
		/// R
		/// </summary>
		public const char R = (char)AsciiCode.R;
		/// <summary>
		/// S
		/// </summary>
		public const char S = (char)AsciiCode.S;
		/// <summary>
		/// T
		/// </summary>
		public const char T = (char)AsciiCode.T;
		/// <summary>
		/// U
		/// </summary>
		public const char U = (char)AsciiCode.U;
		/// <summary>
		/// V
		/// </summary>
		public const char V = (char)AsciiCode.V;
		/// <summary>
		/// W
		/// </summary>
		public const char W = (char)AsciiCode.W;
		/// <summary>
		/// X
		/// </summary>
		public const char X = (char)AsciiCode.X;
		/// <summary>
		/// Y
		/// </summary>
		public const char Y = (char)AsciiCode.Y;
		/// <summary>
		/// Z
		/// </summary>
		public const char Z = (char)AsciiCode.Z;

		/// <summary>
		/// [ 91 x5B
		/// </summary>
		public const char LSB = (char)AsciiCode.LSB;// [
		/// <summary>
		/// \ 92 x5C
		/// </summary>
		public const char BACKSLASH = (char)AsciiCode.BACKSLASH;// \
		/// <summary>
		/// ] 93 x5D
		/// </summary>
		public const char RSB = (char)AsciiCode.RSB;// ]
		/// <summary>
		/// ^ 94 x5E
		/// </summary>
		public const char CIRCUMFLEX = (char)AsciiCode.CIRCUMFLEX;// ^
		/// <summary>
		/// _ 95 x5F
		/// </summary>
		public const char UNDERSCORE = (char)AsciiCode.UNDERSCORE;// _
		/// <summary>
		/// ` 96 x60
		/// </summary>
		public const char BACKTICK = (char)AsciiCode.BACKTICK;// `

		/// <summary>
		/// a
		/// </summary>
		public const char a = (char)AsciiCode.a;
		/// <summary>
		/// b
		/// </summary>
		public const char b = (char)AsciiCode.b;
		/// <summary>
		/// c
		/// </summary>
		public const char c = (char)AsciiCode.c;
		/// <summary>
		/// d
		/// </summary>
		public const char d = (char)AsciiCode.d;
		/// <summary>
		/// e
		/// </summary>
		public const char e = (char)AsciiCode.e;
		/// <summary>
		/// f
		/// </summary>
		public const char f = (char)AsciiCode.f;
		/// <summary>
		/// g
		/// </summary>
		public const char g = (char)AsciiCode.g;
		/// <summary>
		/// h
		/// </summary>
		public const char h = (char)AsciiCode.h;
		/// <summary>
		/// i
		/// </summary>
		public const char i = (char)AsciiCode.i;
		/// <summary>
		/// j
		/// </summary>
		public const char j = (char)AsciiCode.j;
		/// <summary>
		/// k
		/// </summary>
		public const char k = (char)AsciiCode.k;
		/// <summary>
		/// l
		/// </summary>
		public const char l = (char)AsciiCode.l;
		/// <summary>
		/// m
		/// </summary>
		public const char m = (char)AsciiCode.m;
		/// <summary>
		/// n
		/// </summary>
		public const char n = (char)AsciiCode.n;
		/// <summary>
		/// o
		/// </summary>
		public const char o = (char)AsciiCode.o;
		/// <summary>
		/// p
		/// </summary>
		public const char p = (char)AsciiCode.p;
		/// <summary>
		/// q
		/// </summary>
		public const char q = (char)AsciiCode.q;
		/// <summary>
		/// r
		/// </summary>
		public const char r = (char)AsciiCode.r;
		/// <summary>
		/// s
		/// </summary>
		public const char s = (char)AsciiCode.s;
		/// <summary>
		/// t
		/// </summary>
		public const char t = (char)AsciiCode.t;
		/// <summary>
		/// u
		/// </summary>
		public const char u = (char)AsciiCode.u;
		/// <summary>
		/// v
		/// </summary>
		public const char v = (char)AsciiCode.v;
		/// <summary>
		/// w
		/// </summary>
		public const char w = (char)AsciiCode.w;
		/// <summary>
		/// x
		/// </summary>
		public const char x = (char)AsciiCode.x;
		/// <summary>
		/// y
		/// </summary>
		public const char y = (char)AsciiCode.y;
		/// <summary>
		/// z
		/// </summary>
		public const char z = (char)AsciiCode.z;

		/// <summary>
		/// { 123 x7B
		/// </summary>
		public const char LBB = (char)AsciiCode.LBB;// {
		/// <summary>
		/// | 124 x7C
		/// </summary>
		public const char VERTICAL = (char)AsciiCode.VERTICAL;// |
		/// <summary>
		/// } 125 x7D
		/// </summary>
		public const char RBB = (char)AsciiCode.RBB;// }
		/// <summary>
		/// ~ 126 x7E
		/// </summary>
		public const char TILDE = (char)AsciiCode.TILDE;// ~
		/// <summary>
		/// 127 删除
		/// </summary>
		public const char DEL = (char)AsciiCode.DEL;
	}

	#endregion

	#region AsciiString

	/// <summary>
	/// 
	/// </summary>
	public static class AsciiString
	{
		/// <summary>
		/// null
		/// </summary>
		public readonly static string NULL = null;
		/// <summary>
		/// Empty
		/// </summary>
		public const string EMPTY = "";
		/// <summary>
		/// 回车换行\r\n
		/// </summary>
		public const string CRLF = "\x0D\x0A";
		/// <summary>
		/// 空格跳格 \t
		/// </summary>
		public const string SPHT = "\x20\x09";
		/// <summary>
		/// 空格回车换行跳格 \r\n\t
		/// </summary>
		public const string SPCRLFHT = "\x20\x0D\x0A\x09";
		/// <summary>
		/// 0 空字符
		/// </summary>
		public const string NUL = "\0";
		/// <summary>
		/// 1 文头/标题开始/传输开始
		/// </summary>
		public const string SOH = "\x01";
		/// <summary>
		/// 2 正文开始
		/// </summary>
		public const string STX = "\x02";
		/// <summary>
		/// 3 正文结束
		/// </summary>
		public const string ETX = "\x03";
		/// <summary>
		/// 4 文尾/传输结束
		/// </summary>
		public const string EOT = "\x04";
		/// <summary>
		/// 5 请求
		/// </summary>
		public const string ENQ = "\x05";
		/// <summary>
		/// 6 确认/收到通知
		/// </summary>
		public const string ACK = "\x06";
		/// <summary>
		/// 7 振铃/响铃
		/// </summary>
		public const string BEL = "\x07";
		/// <summary>
		/// 8 退格
		/// </summary>
		public const string BS = "\x08";
		/// <summary>
		/// 9 制表/水平制表符
		/// </summary>
		public const string HT = "\x09";
		/// <summary>
		/// 10 换行
		/// </summary>
		public const string LF = "\x0A";
		/// <summary>
		/// 11 垂直制表符
		/// </summary>
		public const string VT = "\x0B";
		/// <summary>
		/// 12 换页/换页键
		/// </summary>
		public const string FF = "\x0C";
		/// <summary>
		/// 13 回车/回车键
		/// </summary>
		public const string CR = "\x0D";
		/// <summary>
		/// 14 不用切换
		/// </summary>
		public const string SO = "\x0E";
		/// <summary>
		/// 15 启用切换
		/// </summary>
		public const string SI = "\x0F";
		/// <summary>
		/// 16 数据链路转义
		/// </summary>
		public const string DLE = "\x10";
		/// <summary>
		/// 17 设备控制1
		/// </summary>
		public const string DC1 = "\x11";
		/// <summary>
		/// 18 设备控制2
		/// </summary>
		public const string DC2 = "\x12";
		/// <summary>
		/// 19 设备控制3
		/// </summary>
		public const string DC3 = "\x13";
		/// <summary>
		/// 20 设备控制4
		/// </summary>
		public const string DC4 = "\x14";
		/// <summary>
		/// 21 拒绝接收
		/// </summary>
		public const string NAK = "\x15";
		/// <summary>
		/// 22 同步空闲
		/// </summary>
		public const string SYN = "\x16";
		/// <summary>
		/// 23 传输块结束
		/// </summary>
		public const string ETB = "\x17";
		/// <summary>
		/// 24 取消
		/// </summary>
		public const string CAN = "\x18";
		/// <summary>
		/// 25 介质中断
		/// </summary>
		public const string EM = "\x19";
		/// <summary>
		/// 26 替补
		/// </summary>
		public const string SUB = "\x1A";
		/// <summary>
		/// 27 溢出
		/// </summary>
		public const string ESC = "\x1B";
		/// <summary>
		/// 28 文件分割符
		/// </summary>
		public const string FS = "\x1C";
		/// <summary>
		/// 29 分组符
		/// </summary>
		public const string GS = "\x1D";
		/// <summary>
		/// 30 记录分离符
		/// </summary>
		public const string RS = "\x1E";
		/// <summary>
		/// 31 单元分隔符
		/// </summary>
		public const string US = "\x1F";
		/// <summary>
		/// 32 空格
		/// </summary>
		public const string SP = "\x20";

		/// <summary>
		/// ! 33x21
		/// </summary>
		public const string EXCLAMATION = "\x21";
		/// <summary>
		/// &quot; 34x22
		/// </summary>
		public const string QUOTATION = "\x22";
		/// <summary>
		/// # 35x23
		/// </summary>
		public const string SHARP = "\x23";
		/// <summary>
		/// $ 36x24
		/// </summary>
		public const string DOLLAR = "\x24";
		/// <summary>
		/// % 37x25
		/// </summary>
		public const string PERCENT = "\x25";
		/// <summary>
		/// &amp; 38x26
		/// </summary>
		public const string AMPERSAND = "\x26";
		/// <summary>
		/// ' 39x27
		/// </summary>
		public const string APOSTROPHE = "\x27";
		/// <summary>
		/// ( Left parentheses 40x28
		/// </summary>
		public const string LP = "\x28";
		/// <summary>
		/// ) Right parentheses 41x29
		/// </summary>
		public const string RP = "\x29";
		/// <summary>
		/// * 42x2A
		/// </summary>
		public const string ASTERISK = "\x2A";
		/// <summary>
		/// + 43x2B
		/// </summary>
		public const string PLUS = "\x2B";
		/// <summary>
		/// , 44x2C
		/// </summary>
		public const string COMMA = "\x2C";
		/// <summary>
		/// - 45x2D
		/// </summary>
		public const string MINUS = "\x2D";
		/// <summary>
		/// . 46x2E
		/// </summary>
		public const string PERIOD = "\x2E";
		/// <summary>
		/// / 47x2F
		/// </summary>
		public const string SLASH = "\x2F";

		/// <summary>
		/// 0
		/// </summary>
		public const string D0 = "\x30";
		/// <summary>
		/// 1
		/// </summary>
		public const string D1 = "\x31";
		/// <summary>
		/// 2
		/// </summary>
		public const string D2 = "\x32";
		/// <summary>
		/// 3
		/// </summary>
		public const string D3 = "\x33";
		/// <summary>
		/// 4
		/// </summary>
		public const string D4 = "\x34";
		/// <summary>
		/// 5
		/// </summary>
		public const string D5 = "\x35";
		/// <summary>
		/// 6
		/// </summary>
		public const string D6 = "\x36";
		/// <summary>
		/// 7
		/// </summary>
		public const string D7 = "\x37";
		/// <summary>
		/// 8
		/// </summary>
		public const string D8 = "\x38";
		/// <summary>
		/// 9
		/// </summary>
		public const string D9 = "\x39";

		/// <summary>
		/// : 58x3A
		/// </summary>
		public const string COLON = "\x3A";
		/// <summary>
		/// ; 59x3B
		/// </summary>
		public const string SEMICOLON = "\x3B";
		/// <summary>
		/// &lt; less-than 60x3C
		/// </summary>
		public const string LT = "\x3C";
		/// <summary>
		/// = 61x3D
		/// </summary>
		public const string EQUAL = "\x3D";
		/// <summary>
		/// &gt; greater-than 62x3E
		/// </summary>
		public const string GT = "\x3E";
		/// <summary>
		/// ? 63x3F
		/// </summary>
		public const string QUESTION = "\x3F";
		/// <summary>
		/// @ 64x40
		/// </summary>
		public const string AT = "\x40";

		/// <summary>
		/// A
		/// </summary>
		public const string A = "\x41";
		/// <summary>
		/// B
		/// </summary>
		public const string B = "\x42";
		/// <summary>
		/// C
		/// </summary>
		public const string C = "\x43";
		/// <summary>
		/// D
		/// </summary>
		public const string D = "\x44";
		/// <summary>
		/// E
		/// </summary>
		public const string E = "\x45";
		/// <summary>
		/// F
		/// </summary>
		public const string F = "\x46";
		/// <summary>
		/// G
		/// </summary>
		public const string G = "\x47";
		/// <summary>
		/// H
		/// </summary>
		public const string H = "\x48";
		/// <summary>
		/// I
		/// </summary>
		public const string I = "\x49";
		/// <summary>
		/// J
		/// </summary>
		public const string J = "\x4A";
		/// <summary>
		/// K
		/// </summary>
		public const string K = "\x4B";
		/// <summary>
		/// L
		/// </summary>
		public const string L = "\x4C";
		/// <summary>
		/// M
		/// </summary>
		public const string M = "\x4D";
		/// <summary>
		/// N
		/// </summary>
		public const string N = "\x4E";
		/// <summary>
		/// O
		/// </summary>
		public const string O = "\x4F";
		/// <summary>
		/// P
		/// </summary>
		public const string P = "\x50";
		/// <summary>
		/// Q
		/// </summary>
		public const string Q = "\x51";
		/// <summary>
		/// R
		/// </summary>
		public const string R = "\x52";
		/// <summary>
		/// S
		/// </summary>
		public const string S = "\x53";
		/// <summary>
		/// T
		/// </summary>
		public const string T = "\x54";
		/// <summary>
		/// U
		/// </summary>
		public const string U = "\x55";
		/// <summary>
		/// V
		/// </summary>
		public const string V = "\x56";
		/// <summary>
		/// W
		/// </summary>
		public const string W = "\x57";
		/// <summary>
		/// X
		/// </summary>
		public const string X = "\x58";
		/// <summary>
		/// Y
		/// </summary>
		public const string Y = "\x59";
		/// <summary>
		/// Z
		/// </summary>
		public const string Z = "\x5A";

		/// <summary>
		/// [ Left square 91x5B
		/// </summary>
		public const string LSB = "\x5B";
		/// <summary>
		/// \ 92x5C
		/// </summary>
		public const string BACKSLASH = "\x5C";
		/// <summary>
		/// ] Right square 93x5D
		/// </summary>
		public const string RSB = "\x5D";
		/// <summary>
		/// ^ 94x5E
		/// </summary>
		public const string CIRCUMFLEX = "\0x5E";
		/// <summary>
		/// _ 95x5F
		/// </summary>
		public const string UNDERSCORE = "\x5F";
		/// <summary>
		/// ` 96x60
		/// </summary>
		public const string BACKTICK = "\x60";

		/// <summary>
		/// a
		/// </summary>
		public const string a = "\x61";
		/// <summary>
		/// b
		/// </summary>
		public const string b = "\x62";
		/// <summary>
		/// c
		/// </summary>
		public const string c = "\x63";
		/// <summary>
		/// d
		/// </summary>
		public const string d = "\x64";
		/// <summary>
		/// e
		/// </summary>
		public const string e = "\x65";
		/// <summary>
		/// f
		/// </summary>
		public const string f = "\x66";
		/// <summary>
		/// g
		/// </summary>
		public const string g = "\x67";
		/// <summary>
		/// h
		/// </summary>
		public const string h = "\x68";
		/// <summary>
		/// i
		/// </summary>
		public const string i = "\x69";
		/// <summary>
		/// j
		/// </summary>
		public const string j = "\x6A";
		/// <summary>
		/// k
		/// </summary>
		public const string k = "\x6B";
		/// <summary>
		/// l
		/// </summary>
		public const string l = "\x6C";
		/// <summary>
		/// m
		/// </summary>
		public const string m = "\x6D";
		/// <summary>
		/// n
		/// </summary>
		public const string n = "\x6E";
		/// <summary>
		/// o
		/// </summary>
		public const string o = "\x6F";
		/// <summary>
		/// p
		/// </summary>
		public const string p = "\x70";
		/// <summary>
		/// q
		/// </summary>
		public const string q = "\x71";
		/// <summary>
		/// r
		/// </summary>
		public const string r = "\x72";
		/// <summary>
		/// s
		/// </summary>
		public const string s = "\x73";
		/// <summary>
		/// t
		/// </summary>
		public const string t = "\x74";
		/// <summary>
		/// u
		/// </summary>
		public const string u = "\x75";
		/// <summary>
		/// v
		/// </summary>
		public const string v = "\x76";
		/// <summary>
		/// w
		/// </summary>
		public const string w = "\x77";
		/// <summary>
		/// x
		/// </summary>
		public const string x = "\x78";
		/// <summary>
		/// y
		/// </summary>
		public const string y = "\x79";
		/// <summary>
		/// z
		/// </summary>
		public const string z = "\x7A";

		/// <summary>
		/// { Left brace 123x7B
		/// </summary>
		public const string LBB = "\x7B";
		/// <summary>
		/// | 124x7C
		/// </summary>
		public const string VERTICAL = "\x7C";
		/// <summary>
		/// } Right brace 125x7D
		/// </summary>
		public const string RBB = "\x7D";
		/// <summary>
		/// ~ 126x7E
		/// </summary>
		public const string TILDE = "\x7E";
		/// <summary>
		/// 127 删除
		/// </summary>
		public const string DEL = "\x7F";
	}

	#endregion

	#region AsciiCode

	/// <summary>
	/// 国际ASCII码表
	/// </summary>
	public static class AsciiCode
	{
		/// <summary>
		/// 0x00 空字符
		/// </summary>
		public const byte NUL = 0x00;
		/// <summary>
		/// 1x01 文头/标题开始/传输开始
		/// </summary>
		public const byte SOH = 0x01;
		/// <summary>
		/// 2x02 正文开始
		/// </summary>
		public const byte STX = 0x02;
		/// <summary>
		/// 3x03 正文结束
		/// </summary>
		public const byte ETX = 0x03;
		/// <summary>
		/// 4x04 文尾/传输结束
		/// </summary>
		public const byte EOT = 0x04;
		/// <summary>
		/// 5x05 请求
		/// </summary>
		public const byte ENQ = 0x05;
		/// <summary>
		/// 6x06 确认/收到通知
		/// </summary>
		public const byte ACK = 0x06;
		/// <summary>
		/// 7x07 振铃/响铃
		/// </summary>
		public const byte BEL = 0x07;
		/// <summary>
		/// 8x08 退格
		/// </summary>
		public const byte BS = 0x08;
		/// <summary>
		/// 9x09 制表/水平制表符
		/// </summary>
		public const byte HT = 0x09;
		/// <summary>
		/// 10x0A 换行
		/// </summary>
		public const byte LF = 0x0A;
		/// <summary>
		/// 11x0B 垂直制表符
		/// </summary>
		public const byte VT = 0x0B;
		/// <summary>
		/// 12x0C 换页/换页键
		/// </summary>
		public const byte FF = 0x0C;
		/// <summary>
		/// 13x0D 回车/回车键
		/// </summary>
		public const byte CR = 0x0D;
		/// <summary>
		/// 14x0E 不用切换
		/// </summary>
		public const byte SO = 0x0E;
		/// <summary>
		/// 15x0F 启用切换
		/// </summary>
		public const byte SI = 0x0F;
		/// <summary>
		/// 16x10 数据链路转义
		/// </summary>
		public const byte DLE = 0x10;
		/// <summary>
		/// 17x11 设备控制1
		/// </summary>
		public const byte DC1 = 0x11;
		/// <summary>
		/// 18x11 设备控制2
		/// </summary>
		public const byte DC2 = 0x12;
		/// <summary>
		/// 19x13 设备控制3
		/// </summary>
		public const byte DC3 = 0x13;
		/// <summary>
		/// 20x14 设备控制4
		/// </summary>
		public const byte DC4 = 0x14;
		/// <summary>
		/// 21x15 拒绝接收
		/// </summary>
		public const byte NAK = 0x15;
		/// <summary>
		/// 22x16 同步空闲
		/// </summary>
		public const byte SYN = 0x16;
		/// <summary>
		/// 23x17 传输块结束
		/// </summary>
		public const byte ETB = 0x17;
		/// <summary>
		/// 24x18 取消
		/// </summary>
		public const byte CAN = 0x18;
		/// <summary>
		/// 25x19 介质中断
		/// </summary>
		public const byte EM = 0x19;
		/// <summary>
		/// 26x1A 替补
		/// </summary>
		public const byte SUB = 0x1A;
		/// <summary>
		/// 27x1B 溢出
		/// </summary>
		public const byte ESC = 0x1B;
		/// <summary>
		/// 28x1C 文件分割符
		/// </summary>
		public const byte FS = 0x1C;
		/// <summary>
		/// 29x1D 分组符
		/// </summary>
		public const byte GS = 0x1D;
		/// <summary>
		/// 30x1E 记录分离符
		/// </summary>
		public const byte RS = 0x1E;
		/// <summary>
		/// 31x1F 单元分隔符
		/// </summary>
		public const byte US = 0x1F;
		/// <summary>
		/// 32x20 空格
		/// </summary>
		public const byte SP = 0x20;

		/// <summary>
		/// ! 33x21
		/// </summary>
		public const byte EXCLAMATION = 0x21;
		/// <summary>
		/// &quot; 34x22
		/// </summary>
		public const byte QUOTATION = 0x22;
		/// <summary>
		/// # 35x23
		/// </summary>
		public const byte SHARP = 0x23;
		/// <summary>
		/// $ 36x24
		/// </summary>
		public const byte DOLLAR = 0x24;
		/// <summary>
		/// % 37x25
		/// </summary>
		public const byte PERCENT = 0x25;
		/// <summary>
		/// &amp; 38x26
		/// </summary>
		public const byte AMPERSAND = 0x26;
		/// <summary>
		/// ' 39x27
		/// </summary>
		public const byte APOSTROPHE = 0x27;
		/// <summary>
		/// ( Left parentheses 40x28
		/// </summary>
		public const byte LP = 0x28;
		/// <summary>
		/// ) Right parentheses 41x29
		/// </summary>
		public const byte RP = 0x29;
		/// <summary>
		/// * 42x2A
		/// </summary>
		public const byte ASTERISK = 0x2A;
		/// <summary>
		/// + 43x2B
		/// </summary>
		public const byte PLUS = 0x2B;
		/// <summary>
		/// , 44x2C
		/// </summary>
		public const byte COMMA = 0x2C;
		/// <summary>
		/// - 45x2D
		/// </summary>
		public const byte MINUS = 0x2D;
		/// <summary>
		/// . 46x2E
		/// </summary>
		public const byte PERIOD = 0x2E;
		/// <summary>
		/// / 47x2F
		/// </summary>
		public const byte SLASH = 0x2F;

		/// <summary>
		/// 0 48x30
		/// </summary>
		public const byte D0 = 0x30;
		/// <summary>
		/// 1 49x31
		/// </summary>
		public const byte D1 = 0x31;
		/// <summary>
		/// 2 50x32
		/// </summary>
		public const byte D2 = 0x32;
		/// <summary>
		/// 3 51x33
		/// </summary>
		public const byte D3 = 0x33;
		/// <summary>
		/// 4 52x34
		/// </summary>
		public const byte D4 = 0x34;
		/// <summary>
		/// 5 53x35
		/// </summary>
		public const byte D5 = 0x35;
		/// <summary>
		/// 6 54x36
		/// </summary>
		public const byte D6 = 0x36;
		/// <summary>
		/// 7 55x37
		/// </summary>
		public const byte D7 = 0x37;
		/// <summary>
		/// 8 56x38
		/// </summary>
		public const byte D8 = 0x38;
		/// <summary>
		/// 9 57x39
		/// </summary>
		public const byte D9 = 0x39;

		/// <summary>
		/// : 58x3A
		/// </summary>
		public const byte COLON = 0x3A;
		/// <summary>
		/// ; 59x3B
		/// </summary>
		public const byte SEMICOLON = 0x3B;
		/// <summary>
		/// &lt; less-than 60x3C
		/// </summary>
		public const byte LT = 0x3C;
		/// <summary>
		/// = 61x3D
		/// </summary>
		public const byte EQUAL = 0x3D;
		/// <summary>
		/// &gt; greater-than 62x3E
		/// </summary>
		public const byte GT = 0x3E;
		/// <summary>
		/// ? 63x3F
		/// </summary>
		public const byte QUESTION = 0x3F;
		/// <summary>
		/// @ 64x40
		/// </summary>
		public const byte AT = 0x40;

		/// <summary>
		/// A 65x41
		/// </summary>
		public const byte A = 0x41;
		/// <summary>
		/// B 66x42
		/// </summary>
		public const byte B = 0x42;
		/// <summary>
		/// C 67x43
		/// </summary>
		public const byte C = 0x43;
		/// <summary>
		/// D 68x44
		/// </summary>
		public const byte D = 0x44;
		/// <summary>
		/// E 69x45
		/// </summary>
		public const byte E = 0x45;
		/// <summary>
		/// F 70x46
		/// </summary>
		public const byte F = 0x46;
		/// <summary>
		/// G 71x47
		/// </summary>
		public const byte G = 0x47;
		/// <summary>
		/// H 72x48
		/// </summary>
		public const byte H = 0x48;
		/// <summary>
		/// I 73x49
		/// </summary>
		public const byte I = 0x49;
		/// <summary>
		/// J 74x4A
		/// </summary>
		public const byte J = 0x4A;
		/// <summary>
		/// K 75x4B
		/// </summary>
		public const byte K = 0x4B;
		/// <summary>
		/// L 76x4C
		/// </summary>
		public const byte L = 0x4C;
		/// <summary>
		/// M 77x4D
		/// </summary>
		public const byte M = 0x4D;
		/// <summary>
		/// N 78x4E
		/// </summary>
		public const byte N = 0x4E;
		/// <summary>
		/// O 79x4F
		/// </summary>
		public const byte O = 0x4F;
		/// <summary>
		/// P 80x50
		/// </summary>
		public const byte P = 0x50;
		/// <summary>
		/// Q 81x51
		/// </summary>
		public const byte Q = 0x51;
		/// <summary>
		/// R 82x52
		/// </summary>
		public const byte R = 0x52;
		/// <summary>
		/// S 83x53
		/// </summary>
		public const byte S = 0x53;
		/// <summary>
		/// T 84x54
		/// </summary>
		public const byte T = 0x54;
		/// <summary>
		/// U 85x55
		/// </summary>
		public const byte U = 0x55;
		/// <summary>
		/// V 86x56
		/// </summary>
		public const byte V = 0x56;
		/// <summary>
		/// W 87x57
		/// </summary>
		public const byte W = 0x57;
		/// <summary>
		/// X 88x58
		/// </summary>
		public const byte X = 0x58;
		/// <summary>
		/// Y 89x59
		/// </summary>
		public const byte Y = 0x59;
		/// <summary>
		/// Z 90x5A
		/// </summary>
		public const byte Z = 0x5A;

		/// <summary>
		/// [ Left square 91x5B
		/// </summary>
		public const byte LSB = 0x5B;
		/// <summary>
		/// \ 92x5C
		/// </summary>
		public const byte BACKSLASH = 0x5C;
		/// <summary>
		/// ] Right square 93x5D
		/// </summary>
		public const byte RSB = 0x5D;
		/// <summary>
		/// ^ 94x5E
		/// </summary>
		public const byte CIRCUMFLEX = 0x5E;
		/// <summary>
		/// _ 95x5F
		/// </summary>
		public const byte UNDERSCORE = 0x5F;
		/// <summary>
		/// ` 96x60
		/// </summary>
		public const byte BACKTICK = 0x60;

		/// <summary>
		/// a 97x61
		/// </summary>
		public const byte a = 0x61;
		/// <summary>
		/// b 98x62
		/// </summary>
		public const byte b = 0x62;
		/// <summary>
		/// c 99x63
		/// </summary>
		public const byte c = 0x63;
		/// <summary>
		/// d 100x64
		/// </summary>
		public const byte d = 0x64;
		/// <summary>
		/// e 101x65
		/// </summary>
		public const byte e = 0x65;
		/// <summary>
		/// f 102x66
		/// </summary>
		public const byte f = 0x66;
		/// <summary>
		/// g 103x67
		/// </summary>
		public const byte g = 0x67;
		/// <summary>
		/// h 104x68
		/// </summary>
		public const byte h = 0x68;
		/// <summary>
		/// i 105x69
		/// </summary>
		public const byte i = 0x69;
		/// <summary>
		/// j 106x6A
		/// </summary>
		public const byte j = 0x6A;
		/// <summary>
		/// k 107x6B
		/// </summary>
		public const byte k = 0x6B;
		/// <summary>
		/// l 108x6C
		/// </summary>
		public const byte l = 0x6C;
		/// <summary>
		/// m 109x6D
		/// </summary>
		public const byte m = 0x6D;
		/// <summary>
		/// n 110x6E
		/// </summary>
		public const byte n = 0x6E;
		/// <summary>
		/// o 111x6F
		/// </summary>
		public const byte o = 0x6F;
		/// <summary>
		/// p 112x70
		/// </summary>
		public const byte p = 0x70;
		/// <summary>
		/// q 113x71
		/// </summary>
		public const byte q = 0x71;
		/// <summary>
		/// r 114x72
		/// </summary>
		public const byte r = 0x72;
		/// <summary>
		/// s 115x73
		/// </summary>
		public const byte s = 0x73;
		/// <summary>
		/// t 116x74
		/// </summary>
		public const byte t = 0x74;
		/// <summary>
		/// u 117x75
		/// </summary>
		public const byte u = 0x75;
		/// <summary>
		/// v 118x76
		/// </summary>
		public const byte v = 0x76;
		/// <summary>
		/// w 119x77
		/// </summary>
		public const byte w = 0x77;
		/// <summary>
		/// x 120x78
		/// </summary>
		public const byte x = 0x78;
		/// <summary>
		/// y 121x79
		/// </summary>
		public const byte y = 0x79;
		/// <summary>
		/// z 122x7A
		/// </summary>
		public const byte z = 0x7A;

		/// <summary>
		/// { Left brace 123x7B
		/// </summary>
		public const byte LBB = 0x7B;
		/// <summary>
		/// | 124x7C
		/// </summary>
		public const byte VERTICAL = 0x7C;
		/// <summary>
		/// } Right brace 125x7D
		/// </summary>
		public const byte RBB = 0x7D;
		/// <summary>
		/// ~ 126x7E
		/// </summary>
		public const byte TILDE = 0x7E;
		/// <summary>
		/// 127x7F 删除
		/// </summary>
		public const byte DEL = 0x7F;
	}

	#endregion

	#region AsciiEnum

	/// <summary>
	/// 国际ASCII码表
	/// </summary>
	public enum AsciiEnum : byte
	{
		/// <summary>
		/// 0x00 空字符
		/// </summary>
		NUL = AsciiCode.NUL,
		/// <summary>
		/// 1x01 文头/标题开始/传输开始
		/// </summary>
		SOH = AsciiCode.SOH,
		/// <summary>
		/// 2x02 正文开始
		/// </summary>
		STX = AsciiCode.STX,
		/// <summary>
		/// 3x03 正文结束
		/// </summary>
		ETX = AsciiCode.ETX,
		/// <summary>
		/// 4x04 文尾/传输结束
		/// </summary>
		EOT = AsciiCode.EOT,
		/// <summary>
		/// 5x05 请求
		/// </summary>
		ENQ = AsciiCode.ENQ,
		/// <summary>
		/// 6x06 确认/收到通知
		/// </summary>
		ACK = AsciiCode.ACK,
		/// <summary>
		/// 7x07 振铃/响铃
		/// </summary>
		BEL = AsciiCode.BEL,
		/// <summary>
		/// 8x08 退格
		/// </summary>
		BS = AsciiCode.BS,
		/// <summary>
		/// 9x09 制表/水平制表符
		/// </summary>
		HT = AsciiCode.HT,
		/// <summary>
		/// 10x0A 换行
		/// </summary>
		LF = AsciiCode.LF,
		/// <summary>
		/// 11x0B 垂直制表符
		/// </summary>
		VT = AsciiCode.VT,
		/// <summary>
		/// 12x0C 换页/换页键
		/// </summary>
		FF = AsciiCode.FF,
		/// <summary>
		/// 13x0D 回车/回车键
		/// </summary>
		CR = AsciiCode.CR,
		/// <summary>
		/// 14x0E 不用切换
		/// </summary>
		SO = AsciiCode.SO,
		/// <summary>
		/// 15x0F 启用切换
		/// </summary>
		SI = AsciiCode.SI,
		/// <summary>
		/// 16x10 数据链路转义
		/// </summary>
		DLE = AsciiCode.DLE,
		/// <summary>
		/// 17x11 设备控制1
		/// </summary>
		DC1 = AsciiCode.DC1,
		/// <summary>
		/// 18x11 设备控制2
		/// </summary>
		DC2 = AsciiCode.DC2,
		/// <summary>
		/// 19x13 设备控制3
		/// </summary>
		DC3 = AsciiCode.DC3,
		/// <summary>
		/// 20x14 设备控制4
		/// </summary>
		DC4 = AsciiCode.DC4,
		/// <summary>
		/// 21x15 拒绝接收
		/// </summary>
		NAK = AsciiCode.NAK,
		/// <summary>
		/// 22x16 同步空闲
		/// </summary>
		SYN = AsciiCode.SYN,
		/// <summary>
		/// 23x17 传输块结束
		/// </summary>
		ETB = AsciiCode.ETB,
		/// <summary>
		/// 24x18 取消
		/// </summary>
		CAN = AsciiCode.CAN,
		/// <summary>
		/// 25x19 介质中断
		/// </summary>
		EM = AsciiCode.EM,
		/// <summary>
		/// 26x1A 替补
		/// </summary>
		SUB = AsciiCode.SUB,
		/// <summary>
		/// 27x1B 溢出
		/// </summary>
		ESC = AsciiCode.ESC,
		/// <summary>
		/// 28x1C 文件分割符
		/// </summary>
		FS = AsciiCode.FS,
		/// <summary>
		/// 29x1D 分组符
		/// </summary>
		GS = AsciiCode.GS,
		/// <summary>
		/// 30x1E 记录分离符
		/// </summary>
		RS = AsciiCode.RS,
		/// <summary>
		/// 31x1F 单元分隔符
		/// </summary>
		US = AsciiCode.US,
		/// <summary>
		/// 32x20 空格
		/// </summary>
		SP = AsciiCode.SP,

		/// <summary>
		/// ! 33x21
		/// </summary>
		EXCLAMATION = AsciiCode.EXCLAMATION,
		/// <summary>
		/// &quot; 34x22
		/// </summary>
		QUOTATION = AsciiCode.QUOTATION,
		/// <summary>
		/// # 35x23
		/// </summary>
		SHARP = AsciiCode.SHARP,
		/// <summary>
		/// $ 36x24
		/// </summary>
		DOLLAR = AsciiCode.DOLLAR,
		/// <summary>
		/// % 37x25
		/// </summary>
		PERCENT = AsciiCode.PERCENT,
		/// <summary>
		/// &amp; 38x26
		/// </summary>
		AMPERSAND = AsciiCode.AMPERSAND,
		/// <summary>
		/// ' 39x27
		/// </summary>
		APOSTROPHE = AsciiCode.APOSTROPHE,
		/// <summary>
		/// ( Left parentheses 40x28
		/// </summary>
		LP = AsciiCode.LP,
		/// <summary>
		/// ) Right parentheses 41x29
		/// </summary>
		RP = AsciiCode.RP,
		/// <summary>
		/// * 42x2A
		/// </summary>
		ASTERISK = AsciiCode.ASTERISK,
		/// <summary>
		/// + 43x2B
		/// </summary>
		PLUS = AsciiCode.PLUS,
		/// <summary>
		/// , 44x2C
		/// </summary>
		COMMA = AsciiCode.COMMA,
		/// <summary>
		/// - 45x2D
		/// </summary>
		MINUS = AsciiCode.MINUS,
		/// <summary>
		/// . 46x2E
		/// </summary>
		PERIOD = AsciiCode.PERIOD,
		/// <summary>
		/// / 47x2F
		/// </summary>
		SLASH = AsciiCode.SLASH,

		/// <summary>
		/// 0 48x30
		/// </summary>
		D0 = AsciiCode.D0,
		/// <summary>
		/// 1 49x31
		/// </summary>
		D1 = AsciiCode.D1,
		/// <summary>
		/// 2 50x32
		/// </summary>
		D2 = AsciiCode.D2,
		/// <summary>
		/// 3 51x33
		/// </summary>
		D3 = AsciiCode.D3,
		/// <summary>
		/// 4 52x34
		/// </summary>
		D4 = AsciiCode.D4,
		/// <summary>
		/// 5 53x35
		/// </summary>
		D5 = AsciiCode.D5,
		/// <summary>
		/// 6 54x36
		/// </summary>
		D6 = AsciiCode.D6,
		/// <summary>
		/// 7 55x37
		/// </summary>
		D7 = AsciiCode.D7,
		/// <summary>
		/// 8 56x38
		/// </summary>
		D8 = AsciiCode.D8,
		/// <summary>
		/// 9 57x39
		/// </summary>
		D9 = AsciiCode.D9,

		/// <summary>
		/// : 58x3A
		/// </summary>
		COLON = AsciiCode.COLON,
		/// <summary>
		/// ; 59x3B
		/// </summary>
		SEMICOLON = AsciiCode.SEMICOLON,
		/// <summary>
		/// &lt; less-than 60x3C
		/// </summary>
		LT = AsciiCode.LT,
		/// <summary>
		/// = 61x3D
		/// </summary>
		EQUAL = AsciiCode.EQUAL,
		/// <summary>
		/// &gt; greater-than 62x3E
		/// </summary>
		GT = AsciiCode.GT,
		/// <summary>
		/// ? 63x3F
		/// </summary>
		QUESTION = AsciiCode.QUESTION,
		/// <summary>
		/// @ 64x40
		/// </summary>
		AT = AsciiCode.AT,

		/// <summary>
		/// A 65x41
		/// </summary>
		A = AsciiCode.A,
		/// <summary>
		/// B 66x42
		/// </summary>
		B = AsciiCode.B,
		/// <summary>
		/// C 67x43
		/// </summary>
		C = AsciiCode.C,
		/// <summary>
		/// D 68x44
		/// </summary>
		D = AsciiCode.D,
		/// <summary>
		/// E 69x45
		/// </summary>
		E = AsciiCode.E,
		/// <summary>
		/// F 70x46
		/// </summary>
		F = AsciiCode.F,
		/// <summary>
		/// G 71x47
		/// </summary>
		G = AsciiCode.G,
		/// <summary>
		/// H 72x48
		/// </summary>
		H = AsciiCode.H,
		/// <summary>
		/// I 73x49
		/// </summary>
		I = AsciiCode.I,
		/// <summary>
		/// J 74x4A
		/// </summary>
		J = AsciiCode.J,
		/// <summary>
		/// K 75x4B
		/// </summary>
		K = AsciiCode.K,
		/// <summary>
		/// L 76x4C
		/// </summary>
		L = AsciiCode.L,
		/// <summary>
		/// M 77x4D
		/// </summary>
		M = AsciiCode.M,
		/// <summary>
		/// N 78x4E
		/// </summary>
		N = AsciiCode.N,
		/// <summary>
		/// O 79x4F
		/// </summary>
		O = AsciiCode.O,
		/// <summary>
		/// P 80x50
		/// </summary>
		P = AsciiCode.P,
		/// <summary>
		/// Q 81x51
		/// </summary>
		Q = AsciiCode.Q,
		/// <summary>
		/// R 82x52
		/// </summary>
		R = AsciiCode.R,
		/// <summary>
		/// S 83x53
		/// </summary>
		S = AsciiCode.S,
		/// <summary>
		/// T 84x54
		/// </summary>
		T = AsciiCode.T,
		/// <summary>
		/// U 85x55
		/// </summary>
		U = AsciiCode.U,
		/// <summary>
		/// V 86x56
		/// </summary>
		V = AsciiCode.V,
		/// <summary>
		/// W 87x57
		/// </summary>
		W = AsciiCode.W,
		/// <summary>
		/// X 88x58
		/// </summary>
		X = AsciiCode.X,
		/// <summary>
		/// Y 89x59
		/// </summary>
		Y = AsciiCode.Y,
		/// <summary>
		/// Z 90x5A
		/// </summary>
		Z = AsciiCode.Z,

		/// <summary>
		/// [ Left square 91x5B
		/// </summary>
		LSB = AsciiCode.LSB,
		/// <summary>
		/// \ 92x5C
		/// </summary>
		BACKSLASH = AsciiCode.BACKSLASH,
		/// <summary>
		/// ] Right square 93x5D
		/// </summary>
		RSB = AsciiCode.RSB,
		/// <summary>
		/// ^ 94x5E
		/// </summary>
		CIRCUMFLEX = AsciiCode.CIRCUMFLEX,
		/// <summary>
		/// _ 95x5F
		/// </summary>
		UNDERSCORE = AsciiCode.UNDERSCORE,
		/// <summary>
		/// ` 96x60
		/// </summary>
		BACKTICK = AsciiCode.BACKTICK,

		/// <summary>
		/// a 97x61
		/// </summary>
		a = AsciiCode.a,
		/// <summary>
		/// b 98x62
		/// </summary>
		b = AsciiCode.b,
		/// <summary>
		/// c 99x63
		/// </summary>
		c = AsciiCode.c,
		/// <summary>
		/// d 100x64
		/// </summary>
		d = AsciiCode.d,
		/// <summary>
		/// e 101x65
		/// </summary>
		e = AsciiCode.e,
		/// <summary>
		/// f 102x66
		/// </summary>
		f = AsciiCode.f,
		/// <summary>
		/// g 103x67
		/// </summary>
		g = AsciiCode.g,
		/// <summary>
		/// h 104x68
		/// </summary>
		h = AsciiCode.h,
		/// <summary>
		/// i 105x69
		/// </summary>
		i = AsciiCode.i,
		/// <summary>
		/// j 106x6A
		/// </summary>
		j = AsciiCode.j,
		/// <summary>
		/// k 107x6B
		/// </summary>
		k = AsciiCode.k,
		/// <summary>
		/// l 108x6C
		/// </summary>
		l = AsciiCode.l,
		/// <summary>
		/// m 109x6D
		/// </summary>
		m = AsciiCode.m,
		/// <summary>
		/// n 110x6E
		/// </summary>
		n = AsciiCode.n,
		/// <summary>
		/// o 111x6F
		/// </summary>
		o = AsciiCode.o,
		/// <summary>
		/// p 112x70
		/// </summary>
		p = AsciiCode.p,
		/// <summary>
		/// q 113x71
		/// </summary>
		q = AsciiCode.q,
		/// <summary>
		/// r 114x72
		/// </summary>
		r = AsciiCode.r,
		/// <summary>
		/// s 115x73
		/// </summary>
		s = AsciiCode.s,
		/// <summary>
		/// t 116x74
		/// </summary>
		t = AsciiCode.t,
		/// <summary>
		/// u 117x75
		/// </summary>
		u = AsciiCode.u,
		/// <summary>
		/// v 118x76
		/// </summary>
		v = AsciiCode.v,
		/// <summary>
		/// w 119x77
		/// </summary>
		w = AsciiCode.w,
		/// <summary>
		/// x 120x78
		/// </summary>
		x = AsciiCode.x,
		/// <summary>
		/// y 121x79
		/// </summary>
		y = AsciiCode.y,
		/// <summary>
		/// z 122x7A
		/// </summary>
		z = AsciiCode.z,

		/// <summary>
		/// { Left brace 123x7B
		/// </summary>
		LBB = AsciiCode.LBB,
		/// <summary>
		/// | 124x7C
		/// </summary>
		VERTICAL = AsciiCode.VERTICAL,
		/// <summary>
		/// } Right brace 125x7D
		/// </summary>
		RBB = AsciiCode.RBB,
		/// <summary>
		/// ~ 126x7E
		/// </summary>
		TILDE = AsciiCode.TILDE,
		/// <summary>
		/// 127x7F 删除
		/// </summary>
		DEL = AsciiCode.DEL,
	}

	#endregion
}
